use of org.kie.server.controller.client.event.EventHandler in project kie-wb-common by kiegroup.
the class StandaloneControllerMultinodeIT method testAvailableRestEndpoint.
/**
* This creates a multiinstance node where
* instance 1 deploys the workbench
* instance 2 deploys kie-server
* after checking that the instance 2 manual is instantiated and working
* it kills the server (only working in linux for now) -> on windows it will stop the app server gracefully
* instance 2 is killed and the health check detects the problem
* notifies back to the test that the kie server is disconnected (CountDownLatch in the EventHandler)
*/
@Test
@RunAsClient
@OperateOnDeployment("workbench")
public void testAvailableRestEndpoint() throws Exception {
String url = new URL("http://localhost:8080/workbench/websocket/controller").toExternalForm();
URL serverUrl = new URL("http://localhost:8230/kie-server/services/rest/server");
CountDownLatch serverDown = new CountDownLatch(1);
CountDownLatch kieServerTemplateUp = new CountDownLatch(1);
CountDownLatch kieServerInstanceUp = new CountDownLatch(1);
EventHandler customWSEventHandler = new EventHandler() {
@Override
public void onServerInstanceConnected(ServerInstanceConnected serverInstanceConnected) {
LOGGER.info("onServerInstanceConnected :" + serverInstanceConnected);
}
@Override
public void onServerInstanceDeleted(ServerInstanceDeleted serverInstanceDeleted) {
LOGGER.info("onServerInstanceDeleted :" + serverInstanceDeleted);
}
@Override
public void onServerInstanceDisconnected(ServerInstanceDisconnected serverInstanceDisconnected) {
LOGGER.info("onServerInstanceDisconnected :" + serverInstanceDisconnected);
serverDown.countDown();
}
@Override
public void onServerTemplateDeleted(ServerTemplateDeleted serverTemplateDeleted) {
LOGGER.info("onServerTemplateDeleted :" + serverTemplateDeleted);
}
@Override
public void onServerTemplateUpdated(ServerTemplateUpdated serverTemplateUpdated) {
LOGGER.info("onServerTemplateUpdated :" + serverTemplateUpdated);
kieServerTemplateUp.countDown();
}
@Override
public void onServerInstanceUpdated(ServerInstanceUpdated serverInstanceUpdated) {
LOGGER.info("onServerInstanceUpdated :" + serverInstanceUpdated);
kieServerInstanceUp.countDown();
}
@Override
public void onContainerSpecUpdated(ContainerSpecUpdated containerSpecUpdated) {
LOGGER.info("onContainerSpecUpdated :" + containerSpecUpdated);
}
};
deployer.deploy("kie-server");
assertTrue(ping(serverUrl));
// the use of manually deployment is the only way to guarantee that the web context is completely deployed
// and not causing a race condition when the controller ping the server and severing the connection
deployer.deploy("workbench");
try (WebSocketKieServerControllerClient client = (WebSocketKieServerControllerClient) KieServerControllerClientFactory.newWebSocketClient(url, USER, PASSWORD, customWSEventHandler)) {
kieServerTemplateUp.await(100, TimeUnit.SECONDS);
kieServerInstanceUp.await(100, TimeUnit.SECONDS);
ServerInstanceKeyList list = client.getServerInstances(KIE_SERVER_ID);
assertEquals(1, list.getServerInstanceKeys().length);
// kill the secondary node
controller.kill(SECONDARY_NODE);
serverDown.await(100, TimeUnit.SECONDS);
assertFalse(ping(serverUrl));
list = client.getServerInstances(KIE_SERVER_ID);
assertEquals(0, list.getServerInstanceKeys().length);
}
}
use of org.kie.server.controller.client.event.EventHandler in project kie-wb-common by kiegroup.
the class EmbeddedControllerIT method testEmbeddedNotificationsUsingWebSocket.
@Test
@RunAsClient
@OperateOnDeployment("workbench")
public void testEmbeddedNotificationsUsingWebSocket(@ArquillianResource final URL baseURL) {
EventHandler eventHandler = mock(EventHandler.class);
client = KieServerControllerClientFactory.newWebSocketClient(getWebSocketUrl(baseURL), USER, PASSWORD, eventHandler);
runAsync(() -> {
// Check that there are no kie servers deployed in controller.
ServerTemplateList instanceList = client.listServerTemplates();
assertServerTemplateList(instanceList);
// Create new server template
ServerTemplate template = new ServerTemplate("notification-int-test", "Notification Test Server");
client.saveServerTemplate(template);
// Check that kie server is registered in controller.
instanceList = client.listServerTemplates();
assertNotNull(instanceList);
assertEquals(2, instanceList.getServerTemplates().length);
// Delete server template
client.deleteServerTemplate(template.getId());
instanceList = client.listServerTemplates();
assertServerTemplateList(instanceList);
});
verify(eventHandler, timeout(2000L)).onServerTemplateUpdated(any());
verify(eventHandler, timeout(2000L)).onServerTemplateDeleted(any());
verifyNoMoreInteractions(eventHandler);
}
Aggregations