test: Add comprehensive RelationalDatabase SQL testing suite
This PR adds a comprehensive test suite for the RelationalDatabase SQL functionality in rippled, providing extensive coverage of all core SQL operations and integration points.
High Level Overview of Change
The RelationalDatabase is a critical component of rippled that provides SQL-based indexing and querying capabilities for ledger data, transaction history, and account information. This PR introduces thorough testing to ensure reliability and prevent regressions.
Type of Change
- [x] Tests
Test Plan
The test suite includes 12 comprehensive test methods covering:
Core SQL Operations
- RelationalDatabase initialization and factory pattern
- SQL schema creation and validation
- Last validated ledger retrieval
- Account transaction history queries
- Transaction and ledger count operations
Advanced Database Operations
- Hash-based ledger queries and parent-child relationships
- Transaction insertion, retrieval, and ID lookup
- Database space monitoring and resource management
- Historical data cleanup and deletion operations
Integration & Performance
- NodeStore integration with hash consistency verification
- Performance testing with timing measurements
- Error handling for edge cases and boundary conditions
- Database connection lifecycle management
Test Results
All tests pass successfully:
- 12 test methods
- 146 individual test assertions
- 0 failures
- 848ms execution time
All related test suites (SHAMapStore, ledger) continue to pass with no regressions.
API Impact
None - this is a test-only change that exercises existing RelationalDatabase functionality.
Performance
The tests include performance benchmarks that demonstrate efficient query execution:
- Ledger count queries complete in microseconds
- Account transaction queries handle realistic datasets efficiently
- Hash-based lookups maintain expected performance characteristics
Special Thanks to @Handy4ndy, @fumianimax and @M-Amaury at the XRPL Commons Bootcamp
Thank you @RomThpt , this PR looks like a good effort, I am going to enable workflows so we can see how it actually improves unit test coverage.