/*************************GO-LICENSE-START********************************* * Copyright 2014 ThoughtWorks, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. *************************GO-LICENSE-END***********************************/ package com.thoughtworks.go.domain.materials.perforce; import com.thoughtworks.go.config.materials.perforce.P4Material; import com.thoughtworks.go.helper.P4TestRepo; import com.thoughtworks.go.util.command.CommandLineException; public class P4Fixture { private P4TestRepo repo; public void start() { } public void setRepo(P4TestRepo repo) { this.repo = repo; } public void stop(P4Client p4) { stopP4d(p4); repo.onTearDown(); } private void stopP4d(P4Client p4) { try { p4.admin("stop"); try { //Wait for the server to shutdown Thread.sleep(5000); } catch (InterruptedException ignored) { } } catch (CommandLineException expected) { if (isKnownWindowsError(expected)) { return; } throw expected; } } private boolean isKnownWindowsError(CommandLineException expected) { // Stopping p4d on windows returns the following failure: return expected.getResult().errorAsString().contains("WSAECONNRESET"); } public String port() { return repo.serverAndPort(); } public P4Client createClient() throws Exception { return repo.createClient(); } public P4Client createClient(String name, String view) throws Exception { return repo.createClientWith(name, view); } public P4Material material(String view) { return repo.material(view); } public P4Material material(String view, String dest) { P4Material p4Material = material(view); p4Material.setFolder(dest); return p4Material; } }