Skip to content

Commit 1492c4c

Browse files
chore: add github action for sql audit store test (#732)
1 parent c629f6d commit 1492c4c

File tree

4 files changed

+98
-14
lines changed

4 files changed

+98
-14
lines changed

.github/workflows/build.yml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,4 +16,6 @@ jobs:
1616
github-token: ${{ secrets.FLAMINGOCK_JRELEASER_GITHUB_TOKEN }}
1717

1818
- name: Unit and Integration tests
19-
run: ./gradlew clean build
19+
run: |
20+
./gradlew clean build \
21+
-Psql.test.dialects=mysql
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
name: SQL Audit Store Tests
2+
3+
on:
4+
workflow_dispatch:
5+
inputs:
6+
dialects:
7+
description: 'Database dialects to test (comma-separated: mysql,postgresql,mariadb,sqlserver,oracle,informix,firebird,h2,sqlite)'
8+
required: false
9+
default: 'mysql,postgresql,mariadb'
10+
11+
jobs:
12+
test-sql-audit:
13+
runs-on: ubuntu-latest
14+
timeout-minutes: 60
15+
16+
steps:
17+
- name: Checkout code
18+
uses: actions/checkout@v4
19+
20+
- name: Set up JDK 17
21+
uses: actions/setup-java@v4
22+
with:
23+
java-version: '17'
24+
distribution: 'temurin'
25+
26+
- name: Setup Gradle
27+
uses: gradle/actions/setup-gradle@v3
28+
29+
- name: Grant execute permission for gradlew
30+
run: chmod +x gradlew
31+
32+
- name: Run SQL Audit Store Tests
33+
env:
34+
ENABLED_DIALECTS: ${{ github.event.inputs.dialects || 'mysql,postgresql,mariadb' }}
35+
run: |
36+
./gradlew :community:flamingock-auditstore-sql:test \
37+
-Psql.test.dialects="${ENABLED_DIALECTS}" \
38+
--info
39+
40+
- name: Upload Test Reports
41+
if: always()
42+
uses: actions/upload-artifact@v4
43+
with:
44+
name: sql-audit-test-reports
45+
path: |
46+
community/flamingock-auditstore-sql/build/reports/tests/
47+
community/flamingock-auditstore-sql/build/test-results/
48+
retention-days: 7

community/flamingock-auditstore-sql/build.gradle.kts

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import java.time.Duration
2+
13
dependencies {
24
api(project(":core:flamingock-core"))
35
api(project(":core:target-systems:sql-target-system"))
@@ -34,3 +36,25 @@ java {
3436
configurations.testImplementation {
3537
extendsFrom(configurations.compileOnly.get())
3638
}
39+
40+
tasks.test {
41+
// CI-specific configuration
42+
val isCI = System.getenv("CI")?.toBoolean() ?: false
43+
val enabledDialects = System.getProperty("sql.test.dialects") ?: if (isCI) "mysql" else "mysql,postgresql,mariadb"
44+
45+
systemProperty("sql.test.dialects", enabledDialects)
46+
47+
// Parallel execution control
48+
maxParallelForks = if (isCI) 1 else (Runtime.getRuntime().availableProcessors() / 2).coerceAtLeast(1)
49+
50+
// Timeout for long-running database tests
51+
if (isCI) {
52+
timeout.set(Duration.ofMinutes(30))
53+
}
54+
55+
testLogging {
56+
events("passed", "skipped", "failed")
57+
showStandardStreams = false
58+
}
59+
}
60+

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

Lines changed: 23 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -37,9 +37,8 @@
3737

3838
import javax.sql.DataSource;
3939
import java.sql.*;
40-
import java.util.Collections;
41-
import java.util.HashMap;
42-
import java.util.Map;
40+
import java.util.*;
41+
import java.util.stream.Collectors;
4342
import java.util.stream.Stream;
4443

4544
import static org.junit.jupiter.api.Assertions.*;
@@ -53,19 +52,30 @@ class SqlAuditStoreTest {
5352
private TestContext context;
5453

5554
static Stream<Arguments> dialectProvider() {
56-
return Stream.of(
57-
Arguments.of(SqlDialect.MYSQL, "mysql")
58-
// , Arguments.of(SqlDialect.SQLSERVER, "sqlserver")
59-
// , Arguments.of(SqlDialect.ORACLE, "oracle")
60-
// , Arguments.of(SqlDialect.POSTGRESQL, "postgresql")
61-
// , Arguments.of(SqlDialect.MARIADB, "mariadb")
62-
// , Arguments.of(SqlDialect.H2, "h2")
63-
// , Arguments.of(SqlDialect.SQLITE, "sqlite")
64-
// , Arguments.of(SqlDialect.INFORMIX, "informix")
65-
// , Arguments.of(SqlDialect.FIREBIRD, "firebird")
55+
String enabledDialects = System.getProperty("sql.test.dialects", "mysql");
56+
Set<String> enabled = Arrays.stream(enabledDialects.split(","))
57+
.map(String::trim)
58+
.collect(Collectors.toSet());
59+
60+
Stream<Arguments> allDialects = Stream.of(
61+
Arguments.of(SqlDialect.MYSQL, "mysql"),
62+
Arguments.of(SqlDialect.SQLSERVER, "sqlserver"),
63+
Arguments.of(SqlDialect.ORACLE, "oracle"),
64+
Arguments.of(SqlDialect.POSTGRESQL, "postgresql"),
65+
Arguments.of(SqlDialect.MARIADB, "mariadb"),
66+
Arguments.of(SqlDialect.H2, "h2"),
67+
Arguments.of(SqlDialect.SQLITE, "sqlite"),
68+
Arguments.of(SqlDialect.INFORMIX, "informix"),
69+
Arguments.of(SqlDialect.FIREBIRD, "firebird")
6670
);
71+
72+
return allDialects.filter(args -> {
73+
String dialectName = (String) args.get()[1];
74+
return enabled.contains(dialectName);
75+
});
6776
}
6877

78+
6979
@BeforeAll
7080
void startContainers() {
7181
for (Arguments arg : dialectProvider().toArray(Arguments[]::new)) {

0 commit comments

Comments
 (0)