dataSetDef -> QueryDefinition.builder() .name(dataSetDef.getUUID()) .expression(((SQLDataSetDef) dataSetDef).getDbSQL()) .source(((SQLDataSetDef) dataSetDef).getDataSource()) .target(extractQueryTarget(dataSetDef)) .build() ).collect(Collectors.toSet());
@Test public void testDataSetMetaData() throws Exception { Map<String, String> columns = new HashMap<>(); columns.put("test", "NUMBER"); QueryDefinition definition = QueryDefinition.builder() .name("q1") .columns(columns) .build(); when(dataSetDef.getColumns()).thenReturn(null, new ArrayList<>()); when(dataSetDef.getServerTemplateId()).thenReturn("servereTemplateId"); when(queryServicesClient.getQuery(anyString())).thenReturn(definition); kieServerDataSetProvider.getDataSetMetadata(dataSetDef); verify(dataSetDef, times(1)).addColumn(eq("test"), eq(ColumnType.NUMBER)); verify(queryServicesClient).getQuery(anyString()); }
.name(dataSetLookup.getDataSetUUID()) .source(def.getDataSource()) .target(def.getQueryTarget()) .expression(def.getDbSQL()) .build();
dataSetDef -> QueryDefinition.builder() .name(dataSetDef.getUUID()) .expression(((SQLDataSetDef) dataSetDef).getDbSQL()) .source(((SQLDataSetDef) dataSetDef).getDataSource()) .target(dataSetDef.getName().contains("-") ? dataSetDef.getName().substring(0, dataSetDef.getName().indexOf("-")) : "CUSTOM") .build() ).collect(Collectors.toSet());
private void registerQueriesWithRetryException(Exception exception) throws Exception { QueryDefinition query = QueryDefinition.builder().name("test").expression("expression").source("jbpm").target("CUSTOM").build(); Set<QueryDefinition> definitions = new HashSet<>(); definitions.add(query); KieServicesClient kieClientRecreated = Mockito.mock(KieServicesClient.class); QueryServicesClient queryClientRecreated = Mockito.mock(QueryServicesClient.class); when(kieClientRecreated.getServicesClient(any())).thenReturn(queryClientRecreated); when(kieServerIntegration.getAdminServerClientCheckEndpoints(anyString())).thenReturn(kieClientRecreated); doThrow(exception).when(queryClient).replaceQuery(any()); kieServerDataSetManager.registerQueriesWithRetry("template", "instance", definitions); verify(kieServerIntegration, times(1)).getAdminServerClient(anyString(), anyString()); verify(kieServerIntegration, times(1)).getAdminServerClientCheckEndpoints(anyString()); verify(queryClient, times(1)).replaceQuery(any()); verify(queryClientRecreated, times(1)).replaceQuery(any()); assertEquals(1, receivedEvents.size()); }
private void registerQueriesWithRetryException(Exception exception) throws Exception { QueryDefinition query = QueryDefinition.builder().name("test").expression("expression").source("jbpm").target("CUSTOM").build(); Set<QueryDefinition> definitions = new HashSet<>(); definitions.add(query); KieServicesClient kieClientRecreated = Mockito.mock(KieServicesClient.class); QueryServicesClient queryClientRecreated = Mockito.mock(QueryServicesClient.class); when(kieClientRecreated.getServicesClient(any())).thenReturn(queryClientRecreated); when(kieServerIntegration.getAdminServerClientCheckEndpoints(anyString())).thenReturn(kieClientRecreated); doThrow(exception).when(queryClient).replaceQuery(any()); kieServerDataSetManager.registerQueriesWithRetry("template", "instance", definitions); verify(kieServerIntegration, times(1)).getAdminServerClient(anyString(), anyString()); verify(kieServerIntegration, times(1)).getAdminServerClientCheckEndpoints(anyString()); verify(queryClient, times(1)).replaceQuery(any()); verify(queryClientRecreated, times(1)).replaceQuery(any()); assertEquals(1, receivedEvents.size()); }
@Test public void testHumanTasksWithVariablesDataSet() { QueryDefinition qd = QueryDefinition.builder().name(HUMAN_TASKS_WITH_VARIABLES_DATASET).expression("SELECT *").source("source").target("target").build(); dataSetsBootstrap.registerDataSetDefinitions(new QueryDefinitionLoaded(qd)); ArgumentCaptor<SQLDataSetDef> argument = ArgumentCaptor.forClass(SQLDataSetDef.class); verify(dataSetDefRegistry).registerDataSetDef(argument.capture()); SQLDataSetDef dataSetDef = argument.getValue(); assertEquals(HUMAN_TASKS_WITH_VARIABLES_DATASET, dataSetDef.getUUID()); assertEquals("target-" + HUMAN_TASKS_WITH_VARIABLES_DATASET, dataSetDef.getName()); assertEquals(KieServerDataSetProvider.TYPE, dataSetDef.getProvider()); assertEquals("SELECT *", dataSetDef.getDbSQL()); assertEquals(3, dataSetDef.getColumns().size()); } }
@Test public void testProcessInstanceLogsDataSet() { QueryDefinition qd = QueryDefinition.builder().name(PROCESS_INSTANCE_LOGS_DATASET).expression("SELECT *").source("source").target("target").build(); dataSetsBootstrap.registerDataSetDefinitions(new QueryDefinitionLoaded(qd)); ArgumentCaptor<SQLDataSetDef> argument = ArgumentCaptor.forClass(SQLDataSetDef.class); verify(dataSetRegistry).registerDataSetDef(argument.capture()); SQLDataSetDef dataSetDef = argument.getValue(); assertEquals(PROCESS_INSTANCE_LOGS_DATASET, dataSetDef.getUUID()); assertEquals("target-" + PROCESS_INSTANCE_LOGS_DATASET, dataSetDef.getName()); assertEquals(KieServerDataSetProvider.TYPE, dataSetDef.getProvider()); assertEquals("SELECT *", dataSetDef.getDbSQL()); assertEquals(14, dataSetDef.getColumns().size()); } }
@Test public void testRegisterQueriesOnServerWithoutBPMCapability() throws Exception { when(kieClient.getServicesClient(any())).thenThrow(KieServicesException.class); QueryDefinition query = QueryDefinition.builder().name("test").expression("expression").source("jbpm").target("CUSTOM").build(); Set<QueryDefinition> definitions = new HashSet<>(); definitions.add(query); kieServerDataSetManager.registerQueriesWithRetry("template", "instance", definitions); verify(kieServerIntegration, times(1)).getAdminServerClient(anyString(), anyString()); verify(queryClient, never()).replaceQuery(any()); assertEquals(0, receivedEvents.size()); } }
@Test public void testProcessInstanceDataSet() { QueryDefinition qd = QueryDefinition.builder().name(PROCESS_INSTANCE_DATASET).expression("SELECT *").source("source").target("target").build(); dataSetsBootstrap.registerDataSetDefinitions(new QueryDefinitionLoaded(qd)); ArgumentCaptor<SQLDataSetDef> argument = ArgumentCaptor.forClass(SQLDataSetDef.class); verify(dataSetRegistry).registerDataSetDef(argument.capture()); SQLDataSetDef dataSetDef = argument.getValue(); assertEquals(PROCESS_INSTANCE_DATASET, dataSetDef.getUUID()); assertEquals("target-" + PROCESS_INSTANCE_DATASET, dataSetDef.getName()); assertEquals(KieServerDataSetProvider.TYPE, dataSetDef.getProvider()); assertEquals("SELECT *", dataSetDef.getDbSQL()); assertEquals(18, dataSetDef.getColumns().size()); }
@Test public void testHumanTasksWithAdminDataSet() { QueryDefinition qd = QueryDefinition.builder().name(HUMAN_TASKS_WITH_ADMIN_DATASET).expression("SELECT *").source("source").target("target").build(); dataSetsBootstrap.registerDataSetDefinitions(new QueryDefinitionLoaded(qd)); ArgumentCaptor<SQLDataSetDef> argument = ArgumentCaptor.forClass(SQLDataSetDef.class); verify(dataSetDefRegistry).registerDataSetDef(argument.capture()); SQLDataSetDef dataSetDef = argument.getValue(); assertEquals(HUMAN_TASKS_WITH_ADMIN_DATASET, dataSetDef.getUUID()); assertEquals("target-" + HUMAN_TASKS_WITH_ADMIN_DATASET, dataSetDef.getName()); assertEquals(KieServerDataSetProvider.TYPE, dataSetDef.getProvider()); assertEquals("SELECT *", dataSetDef.getDbSQL()); assertEquals(21, dataSetDef.getColumns().size()); }
@Test public void testProcessInstanceDataSet() { QueryDefinition qd = QueryDefinition.builder().name(PROCESS_INSTANCE_DATASET).expression("SELECT *").source("source").target("target").build(); dataSetsBootstrap.registerDataSetDefinitions(new QueryDefinitionLoaded(qd)); ArgumentCaptor<SQLDataSetDef> argument = ArgumentCaptor.forClass(SQLDataSetDef.class); verify(dataSetRegistry).registerDataSetDef(argument.capture()); SQLDataSetDef dataSetDef = argument.getValue(); assertEquals(PROCESS_INSTANCE_DATASET, dataSetDef.getUUID()); assertEquals("target-" + PROCESS_INSTANCE_DATASET, dataSetDef.getName()); assertEquals(KieServerDataSetProvider.TYPE, dataSetDef.getProvider()); assertEquals("SELECT *", dataSetDef.getDbSQL()); assertEquals(18, dataSetDef.getColumns().size()); }
@Test public void testRequestListDataSet() { QueryDefinition qd = QueryDefinition.builder().name(REQUEST_LIST_DATASET).expression("SELECT *").source("source").target("target").build(); dataSetsBootstrap.registerDataSetDefinitions(new QueryDefinitionLoaded(qd)); ArgumentCaptor<SQLDataSetDef> argument = ArgumentCaptor.forClass(SQLDataSetDef.class); verify(dataSetDefRegistry).registerDataSetDef(argument.capture()); SQLDataSetDef dataSetDef = argument.getValue(); assertEquals(REQUEST_LIST_DATASET, dataSetDef.getUUID()); assertEquals("target-" + REQUEST_LIST_DATASET, dataSetDef.getName()); assertEquals(KieServerDataSetProvider.TYPE, dataSetDef.getProvider()); assertEquals("SELECT *", dataSetDef.getDbSQL()); assertEquals(12, dataSetDef.getColumns().size()); }
@Test public void testProcessInstanceLogsDataSet() { QueryDefinition qd = QueryDefinition.builder().name(PROCESS_INSTANCE_LOGS_DATASET).expression("SELECT *").source("source").target("target").build(); dataSetsBootstrap.registerDataSetDefinitions(new QueryDefinitionLoaded(qd)); ArgumentCaptor<SQLDataSetDef> argument = ArgumentCaptor.forClass(SQLDataSetDef.class); verify(dataSetRegistry).registerDataSetDef(argument.capture()); SQLDataSetDef dataSetDef = argument.getValue(); assertEquals(PROCESS_INSTANCE_LOGS_DATASET, dataSetDef.getUUID()); assertEquals("target-" + PROCESS_INSTANCE_LOGS_DATASET, dataSetDef.getName()); assertEquals(KieServerDataSetProvider.TYPE, dataSetDef.getProvider()); assertEquals("SELECT *", dataSetDef.getDbSQL()); assertEquals(14, dataSetDef.getColumns().size()); } }
@Test public void testHumanTasksWithVariablesDataSet() { QueryDefinition qd = QueryDefinition.builder().name(HUMAN_TASKS_WITH_VARIABLES_DATASET).expression("SELECT *").source("source").target("target").build(); dataSetsBootstrap.registerDataSetDefinitions(new QueryDefinitionLoaded(qd)); ArgumentCaptor<SQLDataSetDef> argument = ArgumentCaptor.forClass(SQLDataSetDef.class); verify(dataSetDefRegistry).registerDataSetDef(argument.capture()); SQLDataSetDef dataSetDef = argument.getValue(); assertEquals(HUMAN_TASKS_WITH_VARIABLES_DATASET, dataSetDef.getUUID()); assertEquals("target-" + HUMAN_TASKS_WITH_VARIABLES_DATASET, dataSetDef.getName()); assertEquals(KieServerDataSetProvider.TYPE, dataSetDef.getProvider()); assertEquals("SELECT *", dataSetDef.getDbSQL()); assertEquals(3, dataSetDef.getColumns().size()); } }
protected void replaceQueryInKieServers(DataSetDef def) { if (def instanceof RemoteDataSetDef && ((RemoteDataSetDef) def).getServerTemplateId() != null) { QueryDefinition queryDefinition = QueryDefinition.builder() .name(def.getUUID()) .source(((RemoteDataSetDef) def).getDataSource()) .target(((RemoteDataSetDef) def).getQueryTarget()) .expression(((RemoteDataSetDef) def).getDbSQL()) .build(); kieServerIntegration.broadcastToKieServers(((RemoteDataSetDef) def).getServerTemplateId(), (KieServicesClient client) -> { QueryServicesClient instanceQueryClient = client.getServicesClient(QueryServicesClient.class); QueryDefinition registered = instanceQueryClient.replaceQuery(queryDefinition); return registered; }); LOGGER.info("Data set definition {} ({}) modification event processed", def.getUUID(), def.getName()); } } }
@Test public void testErrorListDataSet() { QueryDefinition qd = QueryDefinition.builder().name(EXECUTION_ERROR_LIST_DATASET).expression("SELECT *").source("source").target("target").build(); dataSetsBootstrap.registerDataSetDefinitions(new QueryDefinitionLoaded(qd)); ArgumentCaptor<SQLDataSetDef> argument = ArgumentCaptor.forClass(SQLDataSetDef.class); verify(dataSetDefRegistry).registerDataSetDef(argument.capture()); SQLDataSetDef dataSetDef = argument.getValue(); assertEquals(EXECUTION_ERROR_LIST_DATASET, dataSetDef.getUUID()); assertEquals("target-" + EXECUTION_ERROR_LIST_DATASET, dataSetDef.getName()); assertEquals(KieServerDataSetProvider.TYPE, dataSetDef.getProvider()); assertEquals("SELECT *", dataSetDef.getDbSQL()); assertEquals(13, dataSetDef.getColumns().size()); } }
@Test public void testProcessInstancesDataSet() { QueryDefinition qd = QueryDefinition.builder().name(DATASET_PROCESS_INSTANCES).expression("SELECT *").source("source").target("target").build(); dataSetsBootstrap.registerDataSetDefinitions(new QueryDefinitionLoaded(qd)); ArgumentCaptor<SQLDataSetDef> argument = ArgumentCaptor.forClass(SQLDataSetDef.class); verify(dataSetRegistry).registerDataSetDef(argument.capture()); SQLDataSetDef dataSetDef = argument.getValue(); assertEquals(DATASET_PROCESS_INSTANCES, dataSetDef.getUUID()); assertEquals("target-" + DATASET_PROCESS_INSTANCES, dataSetDef.getName()); assertEquals(KieServerDataSetProvider.TYPE, dataSetDef.getProvider()); assertEquals("SELECT *", dataSetDef.getDbSQL()); assertEquals(10, dataSetDef.getColumns().size()); }
@Test public void testHumanTasksWithUserDataSet() { QueryDefinition qd = QueryDefinition.builder().name(HUMAN_TASKS_WITH_USER_DATASET).expression("SELECT *").source("source").target("target").build(); dataSetsBootstrap.registerDataSetDefinitions(new QueryDefinitionLoaded(qd)); ArgumentCaptor<SQLDataSetDef> argument = ArgumentCaptor.forClass(SQLDataSetDef.class); verify(dataSetDefRegistry).registerDataSetDef(argument.capture()); SQLDataSetDef dataSetDef = argument.getValue(); assertEquals(HUMAN_TASKS_WITH_USER_DATASET, dataSetDef.getUUID()); assertEquals("target-" + HUMAN_TASKS_WITH_USER_DATASET, dataSetDef.getName()); assertEquals(KieServerDataSetProvider.TYPE, dataSetDef.getProvider()); assertEquals("SELECT *", dataSetDef.getDbSQL()); assertEquals(21, dataSetDef.getColumns().size()); }
@Test public void testHumanTasksDataSet() { QueryDefinition qd = QueryDefinition.builder().name(HUMAN_TASKS_DATASET).expression("SELECT *").source("source").target("target").build(); dataSetsBootstrap.registerDataSetDefinitions(new QueryDefinitionLoaded(qd)); ArgumentCaptor<SQLDataSetDef> argument = ArgumentCaptor.forClass(SQLDataSetDef.class); verify(dataSetDefRegistry).registerDataSetDef(argument.capture()); SQLDataSetDef dataSetDef = argument.getValue(); assertEquals(HUMAN_TASKS_DATASET, dataSetDef.getUUID()); assertEquals("target-" + HUMAN_TASKS_DATASET, dataSetDef.getName()); assertEquals(KieServerDataSetProvider.TYPE, dataSetDef.getProvider()); assertEquals("SELECT *", dataSetDef.getDbSQL()); assertEquals(19, dataSetDef.getColumns().size()); }