package $package;
import java.io.IOException;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
import javax.websocket.ClientEndpointConfig;
import javax.websocket.DeploymentException;
import javax.websocket.Endpoint;
import javax.websocket.EndpointConfig;
import javax.websocket.MessageHandler;
import javax.websocket.Session;
import org.glassfish.tyrus.client.ClientManager;
import org.glassfish.tyrus.server.Server;
import org.glassfish.tyrus.test.tools.TestContainer;
import org.junit.Test;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
/**
* Echo test.
*/
public class EchoTest extends TestContainer {
public static final String MESSAGE = "Do or do not, there is no try.";
@Test
public void testEcho() throws DeploymentException, InterruptedException, IOException {
final Server server = startServer(EchoEndpoint.class);
final CountDownLatch messageLatch = new CountDownLatch(1);
try {
final ClientManager client = ClientManager.createClient();
client.connectToServer(new Endpoint() {
@Override
public void onOpen(Session session, EndpointConfig EndpointConfig) {
try {
session.addMessageHandler(new MessageHandler.Whole<String>() {
@Override
public void onMessage(String message) {
System.out.println("# Received: " + message);
if (message.equals(MESSAGE)) {
messageLatch.countDown();
}
}
});
session.getBasicRemote().sendText(MESSAGE);
} catch (IOException e) {
// do nothing
}
}
}, ClientEndpointConfig.Builder.create().build(), getURI(EchoEndpoint.class));
assertTrue(messageLatch.await(1, TimeUnit.SECONDS));
} catch (Exception e) {
e.printStackTrace();
fail();
} finally {
stopServer(server);
}
}
}