Skip to content

Commit

Permalink
Oracle test adjustments
Browse files Browse the repository at this point in the history
* Make sure that DMN Tests run against all DBs
* Split app DmnDeploymentCollectionResourceTest to test sorting and querying separately
  • Loading branch information
filiphr committed Aug 2, 2024
1 parent 936433b commit 24fb7f6
Show file tree
Hide file tree
Showing 4 changed files with 167 additions and 13 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,34 @@ public void testGetDeployments() throws Exception {
url = baseUrl + "?withoutTenantId=true";
assertResultsPresentInDataResponse(url, firstDeployment.getId());

} finally {
// Always cleanup any created deployments, even if the test failed
List<CmmnDeployment> deployments = repositoryService.createDeploymentQuery().list();
for (CmmnDeployment deployment : deployments) {
repositoryService.deleteDeployment(deployment.getId(), true);
}
}
}

public void testGetDeploymentsSorting() throws Exception {

try {
// Alter time to ensure different deployTimes
Calendar yesterday = Calendar.getInstance();
yesterday.add(Calendar.DAY_OF_MONTH, -1);
cmmnEngineConfiguration.getClock().setCurrentTime(yesterday.getTime());

CmmnDeployment firstDeployment = repositoryService.createDeployment().name("Deployment 1").category("DEF")
.addClasspathResource("org/flowable/cmmn/rest/service/api/repository/oneHumanTaskCase.cmmn")
.tenantId("acme")
.deploy();

cmmnEngineConfiguration.getClock().setCurrentTime(Calendar.getInstance().getTime());
CmmnDeployment secondDeployment = repositoryService.createDeployment().name("Deployment 2").category("ABC")
.addClasspathResource("org/flowable/cmmn/rest/service/api/repository/oneHumanTaskCase.cmmn")
.tenantId("myTenant")
.deploy();

// Check ordering by name
CloseableHttpResponse response = executeRequest(
new HttpGet(SERVER_URL_PREFIX + CmmnRestUrls.createRelativeResourceUrl(CmmnRestUrls.URL_DEPLOYMENT_COLLECTION) + "?sort=name&order=asc"),
Expand Down
15 changes: 15 additions & 0 deletions modules/flowable-dmn-rest/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -243,6 +243,21 @@
<version>${jetty.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.flowable</groupId>
<artifactId>flowable-dmn-spring</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.flowable</groupId>
<artifactId>flowable-idm-spring-configurator</artifactId>
<scope>test</scope>
</dependency>

<!-- swagger -->
<dependency>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,46 +12,97 @@
*/
package org.flowable.dmn.rest.conf.engine;

import javax.sql.DataSource;

import org.flowable.common.engine.impl.AbstractEngineConfiguration;
import org.flowable.dmn.api.DmnDecisionService;
import org.flowable.dmn.api.DmnHistoryService;
import org.flowable.dmn.api.DmnRepositoryService;
import org.flowable.dmn.engine.DmnEngine;
import org.flowable.dmn.engine.DmnEngineConfiguration;
import org.flowable.dmn.engine.impl.cfg.StandaloneInMemDmnEngineConfiguration;
import org.flowable.dmn.spring.DmnEngineFactoryBean;
import org.flowable.dmn.spring.SpringDmnEngineConfiguration;
import org.flowable.idm.spring.configurator.SpringIdmEngineConfigurator;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.transaction.PlatformTransactionManager;

import com.zaxxer.hikari.HikariDataSource;

/**
* @author Yvo Swillens
*/
@Configuration(proxyBeanMethods = false)
public class FlowableDmnEngineConfiguration {

public DmnEngine ruleEngine() {
DmnEngineConfiguration dmnEngineConfiguration = new StandaloneInMemDmnEngineConfiguration();
dmnEngineConfiguration.setDatabaseSchemaUpdate(AbstractEngineConfiguration.DB_SCHEMA_UPDATE_TRUE);
@Value("${jdbc.url:jdbc:h2:mem:flowable;DB_CLOSE_DELAY=1000}")
protected String jdbcUrl;

@Value("${jdbc.driver:org.h2.Driver}")
protected String jdbcDriver;

@Value("${jdbc.username:sa}")
protected String jdbcUsername;

@Value("${jdbc.password:}")
protected String jdbcPassword;

@Bean
public DataSource dataSource() {
HikariDataSource dataSource = new HikariDataSource();
dataSource.setJdbcUrl(jdbcUrl);
dataSource.setDriverClassName(jdbcDriver);
dataSource.setUsername(jdbcUsername);
dataSource.setPassword(jdbcPassword);
return dataSource;
}

@Bean(name = "transactionManager")
public PlatformTransactionManager annotationDrivenTransactionManager(DataSource dataSource) {
DataSourceTransactionManager transactionManager = new DataSourceTransactionManager();
transactionManager.setDataSource(dataSource);
return transactionManager;
}

@Bean(name = "dmnEngine")
public DmnEngineFactoryBean dmnEngineFactoryBean(DmnEngineConfiguration dmnEngineConfiguration) {
DmnEngineFactoryBean factoryBean = new DmnEngineFactoryBean();
factoryBean.setDmnEngineConfiguration(dmnEngineConfiguration);
return factoryBean;
}

@Bean(name = "dmnEngineConfiguration")
public DmnEngineConfiguration dmnEngineConfiguration(DataSource dataSource, PlatformTransactionManager transactionManager,
SpringIdmEngineConfigurator springIdmEngineConfigurator) {
SpringDmnEngineConfiguration dmnEngineConfiguration = new SpringDmnEngineConfiguration();
dmnEngineConfiguration.setDataSource(dataSource);
dmnEngineConfiguration.setDatabaseSchemaUpdate(DmnEngineConfiguration.DB_SCHEMA_UPDATE_TRUE);
dmnEngineConfiguration.setTransactionManager(transactionManager);
dmnEngineConfiguration.setIdmEngineConfigurator(springIdmEngineConfigurator);
dmnEngineConfiguration.setHistoryEnabled(true);
return dmnEngineConfiguration.buildDmnEngine();
return dmnEngineConfiguration;
}

@Bean
public DmnEngineConfiguration dmnEngineConfiguration() {
return ruleEngine().getDmnEngineConfiguration();
@Bean(name = "springIdmEngineConfigurator")
public SpringIdmEngineConfigurator springIdmEngineConfigurator() {
return new SpringIdmEngineConfigurator();
}

@Bean
public DmnRepositoryService dmnRepositoryService() {
return ruleEngine().getDmnRepositoryService();
public DmnRepositoryService dmnRepositoryService(DmnEngine dmnEngine) {
return dmnEngine.getDmnRepositoryService();
}

@Bean
public DmnDecisionService dmnRuleService() {
return ruleEngine().getDmnDecisionService();
public DmnDecisionService dmnRuleService(DmnEngine dmnEngine) {
return dmnEngine.getDmnDecisionService();
}

@Bean
public DmnHistoryService dmnHistoryService() {
return ruleEngine().getDmnHistoryService();
public DmnHistoryService dmnHistoryService(DmnEngine dmnEngine) {
return dmnEngine.getDmnHistoryService();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -182,6 +182,36 @@ public void testGetDeployments() throws Exception {
url = baseUrl + "?withoutTenantId=true";
assertResultsPresentInDataResponse(url, firstDeployment.getId());

} finally {
dmnEngineConfiguration.getClock().reset();

// Always cleanup any created deployments, even if the test failed
List<DmnDeployment> deployments = dmnRepositoryService.createDeploymentQuery().list();
for (DmnDeployment deployment : deployments) {
dmnRepositoryService.deleteDeployment(deployment.getId());
}
}
}

public void testGetDeploymentsSorting() throws Exception {

try {
// Alter time to ensure different deployTimes
Calendar yesterday = Calendar.getInstance();
yesterday.add(Calendar.DAY_OF_MONTH, -1);
dmnEngineConfiguration.getClock().setCurrentTime(yesterday.getTime());

DmnDeployment firstDeployment = dmnRepositoryService.createDeployment().name("Deployment 1").category("DEF")
.addClasspathResource("org/flowable/dmn/rest/service/api/repository/simple.dmn")
.tenantId("acme")
.deploy();

dmnEngineConfiguration.getClock().setCurrentTime(Calendar.getInstance().getTime());
DmnDeployment secondDeployment = dmnRepositoryService.createDeployment().name("Deployment 2").category("ABC")
.addClasspathResource("org/flowable/dmn/rest/service/api/repository/simple.dmn")
.tenantId("myTenant")
.deploy();

// Check ordering by name
CloseableHttpResponse response = executeRequest(
new HttpGet(SERVER_URL_PREFIX + DmnRestUrls.createRelativeResourceUrl(DmnRestUrls.URL_DEPLOYMENT_COLLECTION) + "?sort=name&order=asc"),
Expand Down Expand Up @@ -311,6 +341,36 @@ public void testGetDeploymentsDecisionService() throws Exception {
url = baseUrl + "?withoutTenantId=true";
assertResultsPresentInDataResponse(url, firstDeployment.getId());

} finally {
dmnEngineConfiguration.getClock().reset();

// Always cleanup any created deployments, even if the test failed
List<DmnDeployment> deployments = dmnRepositoryService.createDeploymentQuery().list();
for (DmnDeployment deployment : deployments) {
dmnRepositoryService.deleteDeployment(deployment.getId());
}
}
}

public void testGetDeploymentsDecisionServiceSorting() throws Exception {

try {
// Alter time to ensure different deployTimes
Calendar yesterday = Calendar.getInstance();
yesterday.add(Calendar.DAY_OF_MONTH, -1);
dmnEngineConfiguration.getClock().setCurrentTime(yesterday.getTime());

DmnDeployment firstDeployment = dmnRepositoryService.createDeployment().name("Deployment 1").category("DEF")
.addClasspathResource("org/flowable/dmn/rest/service/api/repository/decision_service-1.dmn")
.tenantId("acme")
.deploy();

dmnEngineConfiguration.getClock().setCurrentTime(Calendar.getInstance().getTime());
DmnDeployment secondDeployment = dmnRepositoryService.createDeployment().name("Deployment 2").category("ABC")
.addClasspathResource("org/flowable/dmn/rest/service/api/repository/decision_service-1.dmn")
.tenantId("myTenant")
.deploy();

// Check ordering by name
CloseableHttpResponse response = executeRequest(
new HttpGet(SERVER_URL_PREFIX + DmnRestUrls.createRelativeResourceUrl(DmnRestUrls.URL_DEPLOYMENT_COLLECTION) + "?sort=name&order=asc"),
Expand Down

0 comments on commit 24fb7f6

Please sign in to comment.