Skip to content

Improve connection API and test infrastructure#181

Merged
oyvindberg merged 6 commits intomainfrom
connection-api-and-test-improvements
Jan 4, 2026
Merged

Improve connection API and test infrastructure#181
oyvindberg merged 6 commits intomainfrom
connection-api-and-test-improvements

Conversation

@oyvindberg
Copy link
Copy Markdown
Collaborator

Summary

  • Add ConnectionSource interface unifying pooled and non-pooled connection sources
  • Add SimpleDataSource for non-pooled connections (wraps DriverManager)
  • Add ConnectionSettings for connection behavior (isolation, autoCommit, readOnly, etc.)
  • Add transactor() shortcuts to DatabaseConfig for common use cases
  • Add test-utils project with file locking for parallel snapshot tests
  • Parallelize type tests (PgTypeTest, MariaTypeTest, DuckDbTypeTest, OracleTypeTest, SqlServerTypeTest, Db2TypeTest)
  • Fix SQL Server test deadlocks by using READ_UNCOMMITTED isolation
  • Bump PostgreSQL version from 14 to 16 in deploy-docs workflow

Test plan

  • All type tests pass with parallelization
  • Full project compiles successfully

🤖 Generated with Claude Code

oyvindberg and others added 6 commits January 4, 2026 21:26
- Add ConnectionSource interface unifying pooled and non-pooled connection sources
- Add SimpleDataSource for non-pooled connections (wraps DriverManager)
- Add ConnectionSettings for connection behavior (isolation, autoCommit, readOnly, etc.)
- Move connection settings from PoolConfig to ConnectionSettings
- Add transactor() shortcuts to DatabaseConfig for common use cases
- Update PooledDataSource to implement ConnectionSource
- Remove config::connect from Transactor (use ConnectionSource instead)

This provides a clean, unified API:
- config.transactor() for quick non-pooled access
- config.transactor(settings, strategy) for customized non-pooled
- HikariDataSourceFactory.create(config, settings, pool).transactor() for pooled

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
When tests run in parallel across multiple JVMs, git operations can conflict.
This adds proper file-based locking to ensure exclusive access to git add.

- Add test-utils project with SnapshotTestUtils (Java)
- withGitLock() uses FileChannel.lock() for cross-JVM file locking
- Update all SnapshotTest files to use shared utility
- Update WithConnection files to use new Transactor API
- Add .snapshot-test.lock to .gitignore

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Migrate from `new Transactor(config, strategy)` to
`config.transactor(strategy)` for all database testers.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Use parallel streams and unique table names per test case to enable
concurrent execution across PgTypeTest, MariaTypeTest, DuckDbTypeTest,
OracleTypeTest, SqlServerTypeTest, and Db2TypeTest.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Update DuckDB Kotlin to use DriverManager.getConnection
- Update DB2 Java to use Transactor pattern
- Update all Kotlin test helpers to use CONFIG.transactor() method

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@oyvindberg oyvindberg merged commit 630b42f into main Jan 4, 2026
12 checks passed
@oyvindberg oyvindberg deleted the connection-api-and-test-improvements branch January 4, 2026 20:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant