package main; import base.CaseConfig; import base.CaseServer; import base.TestException; import main.server.CaseServerImpl; import base.TestCase; import base.TestCasesFactory; /** * @author v.chibrikov */ public class CaseProcessor { private final CaseServer caseServer; private final TestCase[] testCases; private final CaseConfig cfg; public CaseProcessor(CaseConfig cfg) { this.caseServer = new CaseServerImpl(cfg); this.cfg = cfg; testCases = TestCasesFactory.createTestCases(cfg); } public CaseProcessor(CaseConfig cfg, CaseServer caseServer, TestCase... testCases) { this.cfg = cfg; this.caseServer = caseServer; this.testCases = testCases; } public boolean process() { for (TestCase client : testCases) { try { caseServer.run(); if (caseServer.joinTillStarted()) { boolean result = client.test(cfg); if (!result) return false; } else { return false; } Thread.sleep(cfg.getStopWaitPeriod()); } catch (TestException | InterruptedException e) { System.out.println(e.getMessage()); return false; //если caseServer выбросит исключение - то метод process всегда будет возвращать true } finally { caseServer.stop(); } } return true; } public String getServerOut() { return caseServer.getOut(); } }