Skip to content

Commit 60af2a4

Browse files
committed
feat: add sqlite test in sql audit store
1 parent 4108d47 commit 60af2a4

File tree

3 files changed

+20
-17
lines changed

3 files changed

+20
-17
lines changed

community/flamingock-auditstore-sql/src/main/java/io/flamingock/community/sql/driver/SqlAuditStore.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ public synchronized CommunityAuditPersistence getPersistence() {
7676
@Override
7777
public synchronized CommunityLockService getLockService() {
7878
if (lockService == null) {
79-
lockService = new SqlLockService(dataSource, lockRepositoryName, autoCreate);
79+
lockService = new SqlLockService(dataSource, lockRepositoryName);
8080
lockService.initialize(autoCreate);
8181
}
8282
return lockService;

community/flamingock-auditstore-sql/src/main/java/io/flamingock/community/sql/internal/SqlLockService.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,12 +30,11 @@
3030

3131
public class SqlLockService implements CommunityLockService {
3232

33-
private static final String DEFAULT_LOCK_STORE_NAME = "flamingockLock";
3433
private final DataSource dataSource;
3534
private final String lockRepositoryName;
3635
private final SqlLockDialectHelper dialectHelper;
3736

38-
public SqlLockService(DataSource dataSource, String lockRepositoryName, boolean autoCreate) {
37+
public SqlLockService(DataSource dataSource, String lockRepositoryName) {
3938
this.dataSource = dataSource;
4039
this.lockRepositoryName = lockRepositoryName;
4140
this.dialectHelper = new SqlLockDialectHelper(dataSource);

community/flamingock-auditstore-sql/src/test/java/io/flamingock/community/sql/SqlAuditStoreTest.java

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
import org.junit.jupiter.params.provider.MethodSource;
3232
import org.mockito.MockedStatic;
3333
import org.mockito.Mockito;
34+
import org.sqlite.SQLiteDataSource;
3435
import org.testcontainers.containers.*;
3536
import org.testcontainers.junit.jupiter.Testcontainers;
3637
import org.testcontainers.utility.DockerImageName;
@@ -52,9 +53,8 @@ static Stream<Arguments> dialectProvider() {
5253
Arguments.of(SqlDialect.ORACLE, "oracle"),
5354
Arguments.of(SqlDialect.POSTGRESQL, "postgresql"),
5455
Arguments.of(SqlDialect.MARIADB, "mariadb"),
55-
Arguments.of(SqlDialect.H2, "h2")
56-
//Disabled due to issues with file-based databases in CI environments
57-
//Arguments.of(SqlDialect.SQLITE, "sqlite")
56+
Arguments.of(SqlDialect.H2, "h2"),
57+
Arguments.of(SqlDialect.SQLITE, "sqlite")
5858
);
5959
}
6060

@@ -73,21 +73,25 @@ private TestContext setupTest(SqlDialect sqlDialect, String dialectName) throws
7373
}
7474

7575
if ("sqlite".equals(dialectName)) {
76-
HikariConfig config = new HikariConfig();
7776
String dbFile = "test_" + System.currentTimeMillis() + ".db";
78-
config.setJdbcUrl("jdbc:sqlite:" + dbFile);
79-
config.setDriverClassName("org.sqlite.JDBC");
80-
config.setMaximumPoolSize(1);
81-
config.setMinimumIdle(1);
82-
config.setConnectionTimeout(30000);
83-
config.setMaxLifetime(0);
8477

85-
config.setConnectionInitSql("PRAGMA journal_mode=WAL; PRAGMA busy_timeout=5000;");
78+
// Use a shared in-memory DB or file DB, but single connection
79+
String jdbcUrl = "jdbc:sqlite:" + dbFile;
8680

87-
DataSource dataSource = new HikariDataSource(config);
88-
SqlAuditTestHelper.createTables(dataSource, sqlDialect);
81+
// Create a single-connection DataSource for SQLite
82+
SQLiteDataSource ds = new SQLiteDataSource();
83+
ds.setUrl(jdbcUrl);
84+
85+
try (Connection conn = ds.getConnection();
86+
Statement stmt = conn.createStatement()) {
87+
stmt.execute("PRAGMA journal_mode=WAL;");
88+
stmt.execute("PRAGMA busy_timeout=5000;");
89+
}
90+
91+
// Run table creation with this same DataSource
92+
SqlAuditTestHelper.createTables(ds, sqlDialect);
8993

90-
return new TestContext(dataSource, null, SqlDialect.SQLITE);
94+
return new TestContext(ds, null, SqlDialect.SQLITE);
9195
}
9296

9397
JdbcDatabaseContainer<?> container = SqlAuditTestHelper.createContainer(dialectName);

0 commit comments

Comments
 (0)