Skip to content

Latest commit

 

History

10 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Scriptella Testcontainers

Scriptella Testcontainers is a public real-database compatibility suite for Scriptella. It uses Testcontainers to run meaningful ETL compatibility tests against PostgreSQL, MariaDB, Oracle Free, and Microsoft SQL Server.

The suite targets Java 17 and uses one Maven module. Database tests run sequentially on developer machines; CI will run each database in its own Linux job. SQL Server is not supported locally on Apple Silicon.

Prerequisites

  • Java 17 or later;
  • Maven 3.9 or later; and
  • a Testcontainers-compatible Docker runtime.

Local macOS with Colima

Colima is the preferred Docker runtime for local macOS development. The complete suite includes resource-intensive Oracle Free and SQL Server images; the recommended shared VM configuration is:

colima start --cpus 4 --memory 4 --disk 20

Colima can increase an existing VM's disk size but cannot shrink it. Point Testcontainers at Colima's socket before running the suite:

export DOCKER_HOST="unix://${HOME}/.colima/default/docker.sock"
export TESTCONTAINERS_DOCKER_SOCKET_OVERRIDE=/var/run/docker.sock

PostgreSQL, MariaDB, Oracle Free, and Microsoft SQL Server implement the shared compatibility-test contract. SQL Server is intended for Linux CI and is not supported locally on Apple Silicon.

These public compatibility tests exercise core Scriptella ETL behavior against real databases. They are intentionally narrower than the project's comprehensive internal compatibility certification.

Run the project from this directory with the wrapper (each run writes a human-readable log under reports/):

./run-db-test.sh postgresql
./run-db-test.sh mariadb
./run-db-test.sh oracle
./run-db-test.sh mssql
./run-db-test.sh all

The all command runs PostgreSQL, MariaDB, Oracle Free, and SQL Server sequentially, producing one report file per database. SQL Server remains intended for Linux and is unsupported locally on Apple Silicon; on those Macs, run the first three wrapper commands separately.

Extra Maven arguments are forwarded, which makes snapshot testing convenient:

./run-db-test.sh postgresql -Dscriptella.version=1.6-SNAPSHOT

Each report records the database, pinned container image, effective Scriptella version, and JDBC driver version before the Maven output. The configured scriptella.version and driver properties are resolved from Maven, including any command-line overrides.

The database selector is owned by the wrapper; do not pass a forwarded -Ddatabase argument.

GitHub Actions runs the same wrapper in one parallel Linux job per database. The scriptella-etl workflow also installs its current source locally and runs this suite against that 1.6-SNAPSHOT build.

Test status for Scriptella 1.5 (latest release)

DB CI pipeline: PG, MariaDB, Oracle, MSSQL

Database Container image Result
PostgreSQL postgres:17.11-alpine3.24 ✅ PASS
MariaDB mariadb:11.8.8 ✅ PASS
Oracle Free gvenzl/oracle-free:23.26.2-slim-faststart ✅ PASS
SQL Server mcr.microsoft.com/mssql/server:2022-CU26-ubuntu-22.04 ✅ PASS

Compatibility history

Direct Maven debugging

For direct Maven debugging, the underlying commands remain available. For example, run PostgreSQL with:

mvn verify -Ddatabase=postgresql

Run MariaDB directly with:

mvn verify -Ddatabase=mariadb

Run Oracle Free directly with:

mvn verify -Ddatabase=oracle

Run Microsoft SQL Server directly on Linux with:

mvn verify -Ddatabase=mssql

Run all four database tests directly on Linux or another host that supports the SQL Server container with:

mvn verify -Ddatabase=all

On Apple Silicon, the direct Maven equivalents for the three supported local targets are:

mvn verify -Ddatabase=postgresql
mvn verify -Ddatabase=mariadb
mvn verify -Ddatabase=oracle

The default scriptella.version is the latest stable Scriptella version used by the public suite. To test a locally installed development snapshot, first install that snapshot from a sibling scriptella-etl checkout, then override the property:

mvn -f ../scriptella-etl/pom.xml install -DskipTests
mvn verify -Dscriptella.version=1.6-SNAPSHOT

The override selects the same version for both scriptella-core and scriptella-drivers.

Test layout

Each database target has three small pieces:

  • a JUnit test under src/test/java that starts one shared container, seeds and verifies data with the vendor JDBC driver, and runs the Scriptella ETL;
  • one or more ETL fixtures under src/test/resources/etl showing the database connection alias and row-copy pattern; and
  • database-specific setup SQL under src/test/resources/sql.

Each rollback fixture deliberately performs one valid write and then fails on a second write. The test checks through a fresh JDBC connection that Scriptella rolled back the first write as well. New database tests should keep this separation: use Scriptella for the ETL behavior and the vendor driver for independent setup and assertions.

Pinned targets

The database image pins are recorded in src/test/resources/database-images.properties. Vendor JDBC drivers are explicit test dependencies in pom.xml; they are not bundled with Scriptella.

About

Real-database compatibility tests for Scriptella, powered by Testcontainers

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages