Skip to content

Commit

Permalink
run tests on supported databases
Browse files Browse the repository at this point in the history
  • Loading branch information
balsarori committed May 9, 2024
1 parent b612d71 commit 3c28d76
Show file tree
Hide file tree
Showing 3 changed files with 145 additions and 15 deletions.
5 changes: 4 additions & 1 deletion .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -71,8 +71,11 @@ jobs:
env:
DO_PUSH: ${{ github.event_name == 'push' || contains(github.head_ref, 'preview') }}
- name: Build and Test with Maven (and maybe Deploy)
strategy:
matrix:
database: [none, mssql, mysql, postgres, mariadb, oracle ]
shell: bash
run: mvn ${{ steps.define_maven_command.outputs.command }} ${{ env.MAVEN_CLI_OPTS}}
run: mvn -Dlicense.skipAddThirdParty=true ${{ matrix.database }} ${{ steps.define_maven_command.outputs.command }} ${{ env.MAVEN_CLI_OPTS}}
env:
MAVEN_CLI_OPTS: --show-version --no-transfer-progress --settings settings.xml
MAVEN_USERNAME: ${{ secrets.NEXUS_USERNAME }}
Expand Down
53 changes: 51 additions & 2 deletions activiti-core/activiti-engine/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,10 @@
<relativePath>../activiti-core-dependencies</relativePath>
</parent>

<properties>
<testcontainers.version>1.19.8</testcontainers.version>
</properties>

<artifactId>activiti-engine</artifactId>
<name>Activiti :: Engine</name>

Expand Down Expand Up @@ -167,18 +171,63 @@
<dependency>
<groupId>org.testcontainers</groupId>
<artifactId>testcontainers</artifactId>
<version>1.19.7</version>
<version>${testcontainers.version}</version>
</dependency>

<dependency>
<groupId>org.testcontainers</groupId>
<artifactId>mssqlserver</artifactId>
<version>1.19.7</version>
<version>${testcontainers.version}</version>
</dependency>
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>mssql-jdbc</artifactId>
<scope>test</scope>
</dependency>

<dependency>
<groupId>org.testcontainers</groupId>
<artifactId>oracle-xe</artifactId>
<version>${testcontainers.version}</version>
</dependency>
<dependency>
<groupId>com.oracle.database.jdbc</groupId>
<artifactId>ojdbc8</artifactId>
<scope>test</scope>
</dependency>

<dependency>
<groupId>org.testcontainers</groupId>
<artifactId>mysql</artifactId>
<version>${testcontainers.version}</version>
</dependency>
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<scope>test</scope>
</dependency>

<dependency>
<groupId>org.testcontainers</groupId>
<artifactId>mariadb</artifactId>
<version>${testcontainers.version}</version>
</dependency>
<dependency>
<groupId>org.mariadb.jdbc</groupId>
<artifactId>mariadb-java-client</artifactId>
<scope>test</scope>
</dependency>

<dependency>
<groupId>org.testcontainers</groupId>
<artifactId>postgresql</artifactId>
<version>${testcontainers.version}</version>
</dependency>
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<scope>test</scope>
</dependency>
</dependencies>

<build>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,12 @@
import org.junit.Rule;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testcontainers.containers.JdbcDatabaseContainer;
import org.testcontainers.containers.MSSQLServerContainer;
import org.testcontainers.containers.MariaDBContainer;
import org.testcontainers.containers.MySQLContainer;
import org.testcontainers.containers.OracleContainer;
import org.testcontainers.containers.PostgreSQLContainer;

/**
* Base class for the activiti test cases.
Expand All @@ -47,35 +52,33 @@ public abstract class PluggableActivitiTestCase extends AbstractActivitiTestCase

private static Logger pluggableActivitiTestCaseLogger = LoggerFactory.getLogger(PluggableActivitiTestCase.class);

@Rule
public static MSSQLServerContainer mssqlserver;

static {
mssqlserver = new MSSQLServerContainer("mcr.microsoft.com/mssql/server:2019-CU9-ubuntu-16.04")
.acceptLicense();
mssqlserver.addEnv("MSSQL_COLLATION", "LATIN1_GENERAL_100_CS_AS_SC_UTF8");
mssqlserver.start();
}
@Rule
public static JdbcDatabaseContainer databaseContainer = Database.getInstance().startNewJdbcDatabaseContainer();

public static class JDBCProperties {

private JDBCProperties() {
}

public static String getUrl() {
return mssqlserver.getJdbcUrl();
if (databaseContainer == null) return "jdbc:h2:mem:activiti;DB_CLOSE_DELAY=-1";
return databaseContainer.getJdbcUrl();
}

public static String getUsername() {
return mssqlserver.getUsername();
if (databaseContainer == null) return "sa";
return databaseContainer.getUsername();
}

public static String getPassword() {
return mssqlserver.getPassword();
if (databaseContainer == null) return "";
return databaseContainer.getPassword();
}

public static String getDriver() {
return mssqlserver.getDriverClassName();
if (databaseContainer == null) return "org.h2.Driver";
return databaseContainer.getDriverClassName();
}

public static JDBCProperties getInstance() {
Expand Down Expand Up @@ -170,4 +173,79 @@ protected void withRetryInterceptor(Runnable runnable) {
}
}

public enum Database {
POSTGRES {
@Override
protected JdbcDatabaseContainer startNewJdbcDatabaseContainer() {
PostgreSQLContainer postgreSQLContainer = new PostgreSQLContainer("postgres:13.7");
postgreSQLContainer.start();
return postgreSQLContainer;
}
},
ORACLE {
@Override
protected JdbcDatabaseContainer startNewJdbcDatabaseContainer() {
OracleContainer oracleContainer = new OracleContainer(
"gvenzl/oracle-xe:21-slim-faststart")
.withDatabaseName("testDB")
.withUsername("testUser")
.withPassword("testPassword");

oracleContainer.start();
return oracleContainer;
}

},
MYSQL {
@Override
protected JdbcDatabaseContainer startNewJdbcDatabaseContainer() {
MySQLContainer mySQLContainer = new MySQLContainer("mysql:8.0");
mySQLContainer.start();
return mySQLContainer;
}
},
MARIADB {
@Override
protected JdbcDatabaseContainer startNewJdbcDatabaseContainer() {
MariaDBContainer mariaDBContainer = new MariaDBContainer("mariadb:10.6.16");
mariaDBContainer.start();
return mariaDBContainer;
}
},
MSSQL {
@Override
protected JdbcDatabaseContainer startNewJdbcDatabaseContainer() {
MSSQLServerContainer mssqlserver = new MSSQLServerContainer("mcr.microsoft.com/mssql/server:2019-CU9-ubuntu-16.04")
.acceptLicense();
mssqlserver.addEnv("MSSQL_COLLATION", "LATIN1_GENERAL_100_CS_AS_SC_UTF8");
mssqlserver.start();
return mssqlserver;
}

},
NONE {
@Override
protected JdbcDatabaseContainer startNewJdbcDatabaseContainer() {
return null;
}
};

protected JdbcDatabaseContainer startNewJdbcDatabaseContainer() {
throw new UnsupportedOperationException(
String.format(
"The [%s] database was not configured to use Testcontainers!",
name()
)
);
}

public static Database getInstance() {
String database = System.getProperty("db");
database = database == null ? "NONE" : database.toUpperCase();
pluggableActivitiTestCaseLogger.info("Initiating " + database + " container");
return valueOf(database);
}

}

}

0 comments on commit 3c28d76

Please sign in to comment.