package testCases.stepic; import base.CaseConfig; import base.TestCase; import base.TestException; import testCases.websockets.WebsocketClient; import java.net.URI; import java.net.URISyntaxException; import java.util.Date; import java.util.concurrent.atomic.AtomicBoolean; /** * @author v.chibrikov */ public class HW04 implements TestCase { private static final int waitTime = 5000; private static final int waitTick = 10; public boolean test(CaseConfig cfg) { try { String url = "ws://" + cfg.getHost() + ":" + cfg.getPort() + "/chat"; final WebsocketClient clientEndPoint = new WebsocketClient(new URI(url)); final AtomicBoolean result = new AtomicBoolean(false); final String testMessage = "tester:test!"; clientEndPoint.addMessageHandler(message -> { if (message.contains(testMessage)) { result.set(true); } }); clientEndPoint.sendMessage(testMessage); long timeStart = new Date().getTime(); while (!result.get() && new Date().getTime() < timeStart + waitTime) { Thread.sleep(waitTick); } if (!result.get()) { System.out.println("No answer from server. Time passed: " + waitTime + " milliseconds"); } return result.get(); } catch (InterruptedException | URISyntaxException e) { throw new TestException(e); } } }