public KieContainerInstance(String containerId, KieContainerStatus status, InternalKieContainer kieContainer) { super(); this.kieContainer = kieContainer; this.resource = new KieContainerResource( containerId, null, status ); this.marshallers = new ConcurrentHashMap<MarshallingFormat, Marshaller>(); updateReleaseId(); }
public KieContainerInstanceImpl(String containerId, KieContainerStatus status, InternalKieContainer kieContainer, ReleaseId releaseId, KieServerImpl kieServer) { super(); this.kieContainer = kieContainer; this.resource = new KieContainerResource(containerId, releaseId, status); // set the default scanner state to DISPOSED (which is the actual default state) // this way we don't need to do null checks all around for the scanner resource this.resource.setScanner(new KieScannerResource(KieScannerStatus.DISPOSED)); this.marshallers = new ConcurrentHashMap<MarshallingFormat, Marshaller>(); this.serviceContainer = new ConcurrentHashMap<String, Object>(); updateReleaseId(); this.scannerListener = new KieServerScannerEventListener(kieServer, this); }
@Test public void testSetProcessConfigAttributesWhenProcessConfigIsNull() { final Map<?, ?> configs = mock(Map.class); final KieContainerResource containerResource = spy(new KieContainerResource()); final List<KieServerConfigItem> actualConfigItems = containerResource.getConfigItems(); doReturn(null).when(configs).get(Capability.PROCESS); doReturn(configs).when(containerSpec).getConfigs(); instanceManager.setProcessConfigAttributes(containerSpec, containerResource); assertEquals(0, actualConfigItems.size()); }
protected void createExtraContainer() { KieContainerResource containerResource = new KieContainerResource(CONTAINER_ID_101, releaseId101); containerResource.setContainerAlias(CONTAINER_ALIAS); client.createContainer(CONTAINER_ID_101, containerResource); }
protected void createExtraContainer() { KieContainerResource containerResource = new KieContainerResource(CONTAINER_ID_101, releaseId101); containerResource.setContainerAlias(CONTAINER_ALIAS); client.createContainer(CONTAINER_ID_101, containerResource); }
protected void createExtraContainer() { KieContainerResource containerResource = new KieContainerResource(CONTAINER_ID_101, releaseId101); containerResource.setContainerAlias(CONTAINER_ALIAS); client.createContainer(CONTAINER_ID_101, containerResource); }
protected void createExtraContainer() { KieContainerResource containerResource = new KieContainerResource(CONTAINER_ID_101, kjar101); containerResource.setContainerAlias(CONTAINER_ALIAS); client.createContainer(CONTAINER_ID_101, containerResource); }
protected void createExtraContainer() { KieContainerResource containerResource = new KieContainerResource(CONTAINER_ID_101, releaseId101); containerResource.setContainerAlias(CONTAINER_ALIAS); client.createContainer(CONTAINER_ID_101, containerResource); }
@Test public void testEmptyQueryDefinitions() throws Exception { String containerIdEmptyQueryDefinitions = "container-empty-definitions"; int oldQueriesSize = queryClient.getQueries(0, 100).size(); KieServerAssert.assertSuccess(client.createContainer(containerIdEmptyQueryDefinitions, new KieContainerResource(containerIdEmptyQueryDefinitions, releaseIdKjarEmptyQueries))); int newQueriesSize = queryClient.getQueries(0, 100).size(); Assertions.assertThat(newQueriesSize).isEqualTo(oldQueriesSize); }
@Test public void testUnmarshallableQueryDefinitions() throws Exception { String containerIdUnmarshallableQueryDefinitions = "container-unmarshallable-definitions"; int oldQueriesSize = queryClient.getQueries(0, 100).size(); KieServerAssert.assertSuccess(client.createContainer(containerIdUnmarshallableQueryDefinitions, new KieContainerResource(containerIdUnmarshallableQueryDefinitions, releaseIdKjarUnmarshallableQueries))); int newQueriesSize = queryClient.getQueries(0, 100).size(); Assertions.assertThat(newQueriesSize).isEqualTo(oldQueriesSize); }
@Test public void testCreateEmptyContainer() { KieContainerResource containerResource = new KieContainerResource(CONTAINER_ID, releaseId); ServiceResponse<KieContainerResource> createContainer = client.createContainer(CONTAINER_ID, containerResource); KieServerAssert.assertSuccess(createContainer); List<Message> messages = createContainer.getResult().getMessages(); assertThat(messages).hasSize(1); assertThat(messages.get(0).getSeverity()).isEqualTo(Severity.INFO); } }
@Test public void testDeployTwoContainersWithSameQueryName() throws Exception { String containerIdDuplicateQueries = "container-duplicate"; String containerIdKjarTwo = "container-two"; KieServerAssert.assertSuccess(client.createContainer(containerIdDuplicateQueries, new KieContainerResource(containerIdDuplicateQueries, releaseIdKjarDuplicateQueries))); assertKjarWithDuplicateQueriesResultQuery(retrieveQueryDefinitions().get(KJAR_TWO_REGISTERED_QUERY)); KieServerAssert.assertSuccess(client.createContainer(containerIdKjarTwo, new KieContainerResource(containerIdKjarTwo, releaseIdKjarTwo))); assertKjarTwoQuery(retrieveQueryDefinitions().get(KJAR_TWO_REGISTERED_QUERY)); }
@Test public void testTwoQueriesWithSameName() throws Exception { String containerIdDuplicateQueries = "container-duplicate"; KieServerAssert.assertSuccess(client.createContainer(containerIdDuplicateQueries, new KieContainerResource(containerIdDuplicateQueries, releaseIdKjarDuplicateQueries))); assertKjarWithDuplicateQueriesResultQuery(retrieveQueryDefinitions().get(KJAR_DUPLICATE_QUERIES_REGISTERED_QUERY)); }
@Test public void testDifferentGAVsWithAlias() throws Exception { Long oldPid = processClient.startProcess(CONTAINER_ALIAS, PROCESS_ID_EVALUATION); assertThat(oldPid).isNotNull().isGreaterThan(0); ProcessInstance processInstance = processClient.getProcessInstance(CONTAINER_ALIAS, oldPid); assertThat(processInstance).isNotNull(); assertThat(processInstance.getContainerId()).isEqualTo(CONTAINER_ID); // Create a container with completely different GAV ReleaseId differentReleaseId101 = new ReleaseId("org.kie.server.different", "different-gav-definition-project", "1.0.1.Final"); KieContainerResource containerResource = new KieContainerResource(CONTAINER_ID_101, differentReleaseId101); containerResource.setContainerAlias(CONTAINER_ALIAS); client.createContainer(CONTAINER_ID_101, containerResource); Long pid = processClient.startProcess(CONTAINER_ALIAS, PROCESS_ID_EVALUATION_2); assertThat(pid).isNotNull().isGreaterThan(0); processInstance = processClient.getProcessInstance(CONTAINER_ALIAS, pid); assertThat(processInstance).isNotNull(); assertThat(processInstance.getContainerId()).isEqualTo(CONTAINER_ID_101); }
@Test public void testContainerIdAsAlias() throws Exception { Long oldPid = processClient.startProcess(CONTAINER_ALIAS, PROCESS_ID_EVALUATION); assertThat(oldPid).isNotNull().isGreaterThan(0); ProcessInstance processInstance = processClient.getProcessInstance(CONTAINER_ALIAS, oldPid); assertThat(processInstance).isNotNull(); assertThat(processInstance.getContainerId()).isEqualTo(CONTAINER_ID); // Create the second container with alias equal to the first containerId KieContainerResource containerResource = new KieContainerResource(CONTAINER_ID_101, releaseId101); containerResource.setContainerAlias(CONTAINER_ID); client.createContainer(CONTAINER_ID_101, containerResource); assertClientException(() -> processClient.startProcess(CONTAINER_ALIAS, PROCESS_ID_EVALUATION_2), 404, "Could not find process definition \"" + PROCESS_ID_EVALUATION_2 + "\" in container \"" + CONTAINER_ALIAS + "\"", "No process available with given id : " + PROCESS_ID_EVALUATION_2); // Instead the old one should be chosen, since it looks for containerId first oldPid = processClient.startProcess(CONTAINER_ID, PROCESS_ID_EVALUATION); assertThat(oldPid).isNotNull().isGreaterThan(0); processInstance = processClient.getProcessInstance(CONTAINER_ALIAS, oldPid); assertThat(processInstance).isNotNull(); assertThat(processInstance.getContainerId()).isEqualTo(CONTAINER_ID); }
@Test public void testUpdateContainerWithQueryDefinitionsFromKjar() throws Exception { String containerIdKjarOne = "container-one"; KieServerAssert.assertSuccess(client.createContainer(containerIdKjarOne, new KieContainerResource(containerIdKjarOne, releaseIdKjarOne))); assertKjarOneQuery(retrieveQueryDefinitions().get(KJAR_ONE_REGISTERED_QUERY)); // Update container KieServerAssert.assertSuccess(client.updateReleaseId(containerIdKjarOne, releaseIdKjarOneUpdated)); assertKjarOneUpdatedQuery(retrieveQueryDefinitions().get(KJAR_ONE_UPDATED_FIRST_REGISTERED_QUERY)); assertKjarTwoQuery(retrieveQueryDefinitions().get(KJAR_ONE_UPDATED_SECOND_REGISTERED_QUERY)); }
KieContainerResource makeContainerResource(final Container container, final ContainerSpec containerSpec) { final KieContainerResource containerResource = new KieContainerResource(containerSpec.getId(), containerSpec.getReleasedId(), container.getResolvedReleasedId(), container.getStatus()); containerResource.setContainerAlias(containerSpec.getContainerName()); containerResource.setMessages((List<Message>) container.getMessages()); if (containerSpec.getConfigs() != null) { setRuleConfigAttributes(containerSpec, containerResource); setProcessConfigAttributes(containerSpec, containerResource); } return containerResource; }
@Test public void testMessagesOfContainer() throws Exception { ServiceResponse<KieContainerResource> response = client.getContainerInfo(CONTAINER_ID); KieServerAssert.assertSuccess(response); KieContainerResource resource = response.getResult(); assertEquals("Shound not have any messages", 1, resource.getMessages().size()); Message message = resource.getMessages().get(0); assertEquals("Message should be of type info", Severity.INFO, message.getSeverity()); ServiceResponse<KieContainerResource> createNotExsting = client.createContainer( "broken-project", new KieContainerResource( "broken-project", releaseIdBroken)); KieServerAssert.assertFailure(createNotExsting); response = client.getContainerInfo("broken-project"); KieServerAssert.assertSuccess(response); resource = response.getResult(); assertEquals("Shound have one message", 1, resource.getMessages().size()); message = resource.getMessages().get(0); assertEquals("Message should be of type error", Severity.ERROR, message.getSeverity()); }
@BeforeClass public static void buildAndDeployArtifacts() { KieServerDeployer.buildAndDeployCommonMavenParent(); KieServerDeployer.buildAndDeployMavenProjectFromResource("/kjars-sources/query-definition-project"); kieContainer = KieServices.Factory.get().newKieContainer(releaseId); // Having timeout issues due to kjar dependencies -> raised timeout. KieServicesClient client = createDefaultStaticClient(EXTENDED_TIMEOUT); ServiceResponse<KieContainerResource> reply = client.createContainer(CONTAINER_ID, new KieContainerResource(CONTAINER_ID, releaseId)); Assume.assumeTrue(reply.getType().equals(ServiceResponse.ResponseType.SUCCESS)); }
@Test public void testNotAllowedDisposeContainerDueToActiveProcessInstances() throws Exception { KieServerAssert.assertSuccess(client.createContainer(CONTAINER_ID, new KieContainerResource(CONTAINER_ID, releaseId))); Map<String, Object> parameters = new HashMap<String, Object>(); parameters.put("stringData", "waiting for signal"); parameters.put("personData", createPersonInstance(USER_JOHN)); Long processInstanceId = processClient.startProcess(CONTAINER_ID, PROCESS_ID_USERTASK, parameters); // dispose not allowed as there is active process instance ServiceResponse<Void> disposeContainerResponse = client.disposeContainer(CONTAINER_ID); assertEquals(ServiceResponse.ResponseType.FAILURE, disposeContainerResponse.getType()); String failureMessage = disposeContainerResponse.getMsg(); assertEquals(DISPOSE_FAILURE_MSG, failureMessage); // after failed dispose container should be fully operational and in started state ServiceResponse<KieContainerResource> containerResponse = client.getContainerInfo(CONTAINER_ID); assertEquals(ServiceResponse.ResponseType.SUCCESS, containerResponse.getType()); KieContainerResource container = containerResponse.getResult(); assertNotNull(container); assertEquals(KieContainerStatus.STARTED, container.getStatus()); // let's abort the active instance processClient.abortProcessInstance(CONTAINER_ID, processInstanceId); // and now proceed with dispose again which must be successful disposeContainerResponse = client.disposeContainer(CONTAINER_ID); assertEquals(ServiceResponse.ResponseType.SUCCESS, disposeContainerResponse.getType()); } }