Skip to content

Commit 24fb7f6

Browse files
committed
Oracle test adjustments
* Make sure that DMN Tests run against all DBs * Split app DmnDeploymentCollectionResourceTest to test sorting and querying separately
1 parent 936433b commit 24fb7f6

File tree

4 files changed

+167
-13
lines changed

4 files changed

+167
-13
lines changed

modules/flowable-cmmn-rest/src/test/java/org/flowable/cmmn/rest/service/api/repository/DeploymentCollectionResourceTest.java

+28
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,34 @@ public void testGetDeployments() throws Exception {
8989
url = baseUrl + "?withoutTenantId=true";
9090
assertResultsPresentInDataResponse(url, firstDeployment.getId());
9191

92+
} finally {
93+
// Always cleanup any created deployments, even if the test failed
94+
List<CmmnDeployment> deployments = repositoryService.createDeploymentQuery().list();
95+
for (CmmnDeployment deployment : deployments) {
96+
repositoryService.deleteDeployment(deployment.getId(), true);
97+
}
98+
}
99+
}
100+
101+
public void testGetDeploymentsSorting() throws Exception {
102+
103+
try {
104+
// Alter time to ensure different deployTimes
105+
Calendar yesterday = Calendar.getInstance();
106+
yesterday.add(Calendar.DAY_OF_MONTH, -1);
107+
cmmnEngineConfiguration.getClock().setCurrentTime(yesterday.getTime());
108+
109+
CmmnDeployment firstDeployment = repositoryService.createDeployment().name("Deployment 1").category("DEF")
110+
.addClasspathResource("org/flowable/cmmn/rest/service/api/repository/oneHumanTaskCase.cmmn")
111+
.tenantId("acme")
112+
.deploy();
113+
114+
cmmnEngineConfiguration.getClock().setCurrentTime(Calendar.getInstance().getTime());
115+
CmmnDeployment secondDeployment = repositoryService.createDeployment().name("Deployment 2").category("ABC")
116+
.addClasspathResource("org/flowable/cmmn/rest/service/api/repository/oneHumanTaskCase.cmmn")
117+
.tenantId("myTenant")
118+
.deploy();
119+
92120
// Check ordering by name
93121
CloseableHttpResponse response = executeRequest(
94122
new HttpGet(SERVER_URL_PREFIX + CmmnRestUrls.createRelativeResourceUrl(CmmnRestUrls.URL_DEPLOYMENT_COLLECTION) + "?sort=name&order=asc"),

modules/flowable-dmn-rest/pom.xml

+15
Original file line numberDiff line numberDiff line change
@@ -243,6 +243,21 @@
243243
<version>${jetty.version}</version>
244244
<scope>test</scope>
245245
</dependency>
246+
<dependency>
247+
<groupId>com.zaxxer</groupId>
248+
<artifactId>HikariCP</artifactId>
249+
<scope>test</scope>
250+
</dependency>
251+
<dependency>
252+
<groupId>org.flowable</groupId>
253+
<artifactId>flowable-dmn-spring</artifactId>
254+
<scope>test</scope>
255+
</dependency>
256+
<dependency>
257+
<groupId>org.flowable</groupId>
258+
<artifactId>flowable-idm-spring-configurator</artifactId>
259+
<scope>test</scope>
260+
</dependency>
246261

247262
<!-- swagger -->
248263
<dependency>

modules/flowable-dmn-rest/src/test/java/org/flowable/dmn/rest/conf/engine/FlowableDmnEngineConfiguration.java

+64-13
Original file line numberDiff line numberDiff line change
@@ -12,46 +12,97 @@
1212
*/
1313
package org.flowable.dmn.rest.conf.engine;
1414

15+
import javax.sql.DataSource;
16+
1517
import org.flowable.common.engine.impl.AbstractEngineConfiguration;
1618
import org.flowable.dmn.api.DmnDecisionService;
1719
import org.flowable.dmn.api.DmnHistoryService;
1820
import org.flowable.dmn.api.DmnRepositoryService;
1921
import org.flowable.dmn.engine.DmnEngine;
2022
import org.flowable.dmn.engine.DmnEngineConfiguration;
2123
import org.flowable.dmn.engine.impl.cfg.StandaloneInMemDmnEngineConfiguration;
24+
import org.flowable.dmn.spring.DmnEngineFactoryBean;
25+
import org.flowable.dmn.spring.SpringDmnEngineConfiguration;
26+
import org.flowable.idm.spring.configurator.SpringIdmEngineConfigurator;
27+
import org.springframework.beans.factory.annotation.Value;
2228
import org.springframework.context.annotation.Bean;
2329
import org.springframework.context.annotation.Configuration;
30+
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
31+
import org.springframework.transaction.PlatformTransactionManager;
32+
33+
import com.zaxxer.hikari.HikariDataSource;
2434

2535
/**
2636
* @author Yvo Swillens
2737
*/
2838
@Configuration(proxyBeanMethods = false)
2939
public class FlowableDmnEngineConfiguration {
3040

31-
public DmnEngine ruleEngine() {
32-
DmnEngineConfiguration dmnEngineConfiguration = new StandaloneInMemDmnEngineConfiguration();
33-
dmnEngineConfiguration.setDatabaseSchemaUpdate(AbstractEngineConfiguration.DB_SCHEMA_UPDATE_TRUE);
41+
@Value("${jdbc.url:jdbc:h2:mem:flowable;DB_CLOSE_DELAY=1000}")
42+
protected String jdbcUrl;
43+
44+
@Value("${jdbc.driver:org.h2.Driver}")
45+
protected String jdbcDriver;
46+
47+
@Value("${jdbc.username:sa}")
48+
protected String jdbcUsername;
49+
50+
@Value("${jdbc.password:}")
51+
protected String jdbcPassword;
52+
53+
@Bean
54+
public DataSource dataSource() {
55+
HikariDataSource dataSource = new HikariDataSource();
56+
dataSource.setJdbcUrl(jdbcUrl);
57+
dataSource.setDriverClassName(jdbcDriver);
58+
dataSource.setUsername(jdbcUsername);
59+
dataSource.setPassword(jdbcPassword);
60+
return dataSource;
61+
}
62+
63+
@Bean(name = "transactionManager")
64+
public PlatformTransactionManager annotationDrivenTransactionManager(DataSource dataSource) {
65+
DataSourceTransactionManager transactionManager = new DataSourceTransactionManager();
66+
transactionManager.setDataSource(dataSource);
67+
return transactionManager;
68+
}
69+
70+
@Bean(name = "dmnEngine")
71+
public DmnEngineFactoryBean dmnEngineFactoryBean(DmnEngineConfiguration dmnEngineConfiguration) {
72+
DmnEngineFactoryBean factoryBean = new DmnEngineFactoryBean();
73+
factoryBean.setDmnEngineConfiguration(dmnEngineConfiguration);
74+
return factoryBean;
75+
}
76+
77+
@Bean(name = "dmnEngineConfiguration")
78+
public DmnEngineConfiguration dmnEngineConfiguration(DataSource dataSource, PlatformTransactionManager transactionManager,
79+
SpringIdmEngineConfigurator springIdmEngineConfigurator) {
80+
SpringDmnEngineConfiguration dmnEngineConfiguration = new SpringDmnEngineConfiguration();
81+
dmnEngineConfiguration.setDataSource(dataSource);
82+
dmnEngineConfiguration.setDatabaseSchemaUpdate(DmnEngineConfiguration.DB_SCHEMA_UPDATE_TRUE);
83+
dmnEngineConfiguration.setTransactionManager(transactionManager);
84+
dmnEngineConfiguration.setIdmEngineConfigurator(springIdmEngineConfigurator);
3485
dmnEngineConfiguration.setHistoryEnabled(true);
35-
return dmnEngineConfiguration.buildDmnEngine();
86+
return dmnEngineConfiguration;
3687
}
3788

38-
@Bean
39-
public DmnEngineConfiguration dmnEngineConfiguration() {
40-
return ruleEngine().getDmnEngineConfiguration();
89+
@Bean(name = "springIdmEngineConfigurator")
90+
public SpringIdmEngineConfigurator springIdmEngineConfigurator() {
91+
return new SpringIdmEngineConfigurator();
4192
}
4293

4394
@Bean
44-
public DmnRepositoryService dmnRepositoryService() {
45-
return ruleEngine().getDmnRepositoryService();
95+
public DmnRepositoryService dmnRepositoryService(DmnEngine dmnEngine) {
96+
return dmnEngine.getDmnRepositoryService();
4697
}
4798

4899
@Bean
49-
public DmnDecisionService dmnRuleService() {
50-
return ruleEngine().getDmnDecisionService();
100+
public DmnDecisionService dmnRuleService(DmnEngine dmnEngine) {
101+
return dmnEngine.getDmnDecisionService();
51102
}
52103

53104
@Bean
54-
public DmnHistoryService dmnHistoryService() {
55-
return ruleEngine().getDmnHistoryService();
105+
public DmnHistoryService dmnHistoryService(DmnEngine dmnEngine) {
106+
return dmnEngine.getDmnHistoryService();
56107
}
57108
}

modules/flowable-dmn-rest/src/test/java/org/flowable/dmn/rest/service/api/repository/DmnDeploymentCollectionResourceTest.java

+60
Original file line numberDiff line numberDiff line change
@@ -182,6 +182,36 @@ public void testGetDeployments() throws Exception {
182182
url = baseUrl + "?withoutTenantId=true";
183183
assertResultsPresentInDataResponse(url, firstDeployment.getId());
184184

185+
} finally {
186+
dmnEngineConfiguration.getClock().reset();
187+
188+
// Always cleanup any created deployments, even if the test failed
189+
List<DmnDeployment> deployments = dmnRepositoryService.createDeploymentQuery().list();
190+
for (DmnDeployment deployment : deployments) {
191+
dmnRepositoryService.deleteDeployment(deployment.getId());
192+
}
193+
}
194+
}
195+
196+
public void testGetDeploymentsSorting() throws Exception {
197+
198+
try {
199+
// Alter time to ensure different deployTimes
200+
Calendar yesterday = Calendar.getInstance();
201+
yesterday.add(Calendar.DAY_OF_MONTH, -1);
202+
dmnEngineConfiguration.getClock().setCurrentTime(yesterday.getTime());
203+
204+
DmnDeployment firstDeployment = dmnRepositoryService.createDeployment().name("Deployment 1").category("DEF")
205+
.addClasspathResource("org/flowable/dmn/rest/service/api/repository/simple.dmn")
206+
.tenantId("acme")
207+
.deploy();
208+
209+
dmnEngineConfiguration.getClock().setCurrentTime(Calendar.getInstance().getTime());
210+
DmnDeployment secondDeployment = dmnRepositoryService.createDeployment().name("Deployment 2").category("ABC")
211+
.addClasspathResource("org/flowable/dmn/rest/service/api/repository/simple.dmn")
212+
.tenantId("myTenant")
213+
.deploy();
214+
185215
// Check ordering by name
186216
CloseableHttpResponse response = executeRequest(
187217
new HttpGet(SERVER_URL_PREFIX + DmnRestUrls.createRelativeResourceUrl(DmnRestUrls.URL_DEPLOYMENT_COLLECTION) + "?sort=name&order=asc"),
@@ -311,6 +341,36 @@ public void testGetDeploymentsDecisionService() throws Exception {
311341
url = baseUrl + "?withoutTenantId=true";
312342
assertResultsPresentInDataResponse(url, firstDeployment.getId());
313343

344+
} finally {
345+
dmnEngineConfiguration.getClock().reset();
346+
347+
// Always cleanup any created deployments, even if the test failed
348+
List<DmnDeployment> deployments = dmnRepositoryService.createDeploymentQuery().list();
349+
for (DmnDeployment deployment : deployments) {
350+
dmnRepositoryService.deleteDeployment(deployment.getId());
351+
}
352+
}
353+
}
354+
355+
public void testGetDeploymentsDecisionServiceSorting() throws Exception {
356+
357+
try {
358+
// Alter time to ensure different deployTimes
359+
Calendar yesterday = Calendar.getInstance();
360+
yesterday.add(Calendar.DAY_OF_MONTH, -1);
361+
dmnEngineConfiguration.getClock().setCurrentTime(yesterday.getTime());
362+
363+
DmnDeployment firstDeployment = dmnRepositoryService.createDeployment().name("Deployment 1").category("DEF")
364+
.addClasspathResource("org/flowable/dmn/rest/service/api/repository/decision_service-1.dmn")
365+
.tenantId("acme")
366+
.deploy();
367+
368+
dmnEngineConfiguration.getClock().setCurrentTime(Calendar.getInstance().getTime());
369+
DmnDeployment secondDeployment = dmnRepositoryService.createDeployment().name("Deployment 2").category("ABC")
370+
.addClasspathResource("org/flowable/dmn/rest/service/api/repository/decision_service-1.dmn")
371+
.tenantId("myTenant")
372+
.deploy();
373+
314374
// Check ordering by name
315375
CloseableHttpResponse response = executeRequest(
316376
new HttpGet(SERVER_URL_PREFIX + DmnRestUrls.createRelativeResourceUrl(DmnRestUrls.URL_DEPLOYMENT_COLLECTION) + "?sort=name&order=asc"),

0 commit comments

Comments
 (0)