Conversation
|
@fresh-borzoni Appreciate your review here 🙏 |
21bab65 to
93a758f
Compare
|
@leekeiabstraction, it might be the case that we would need to get #351 merged first
|
|
That is fine. We can update this afterwards |
|
Still appreciate your early review on the other parts within this PR though! 🙏🏼 |
fresh-borzoni
left a comment
There was a problem hiding this comment.
@leekeiabstraction Ty for the PR.
quickly looked through. Left couple of comments, but still 'review in progress'
PTAL
bindings/cpp/test/test_utils.h
Outdated
| inline std::vector<fluss::ScanRecord> PollRecords(fluss::LogScanner& scanner, | ||
| size_t expected_count, | ||
| int timeout_seconds = 10) { | ||
| // We need to keep the ScanRecords alive since ScanRecord borrows from them |
There was a problem hiding this comment.
we shall remove it as it just returns empty vector in the end.
But it actually made me think - mb we should just use shared_ptr and I overcomplicated this pattern, it basically would be Arc from Rust.
prepared the fix for this: seems to work and better overall: #353
There was a problem hiding this comment.
Thanks, will update the test to use the latest APIs once #331 is also merged
There was a problem hiding this comment.
#331 is merged, so we can rework this to reduce boilerplate with poll with deadline pattern
fresh-borzoni
left a comment
There was a problem hiding this comment.
@leekeiabstraction finished review, left comments. PTAL
also once scan by buckets PR is merged - we need to add some tests for it
|
@leekeiabstraction Hi, since #331 is merge, maybe you need to update the pr |
8f82bd4 to
6b842b6
Compare
|
@fresh-borzoni Updated C++ IT to also use per-bucket scan records view. Appreciate if you can have a look. TY. |
fresh-borzoni
left a comment
There was a problem hiding this comment.
@leekeiabstraction Ty, left some comments. PTAL
bindings/cpp/test/test_utils.h
Outdated
| inline std::vector<fluss::ScanRecord> PollRecords(fluss::LogScanner& scanner, | ||
| size_t expected_count, | ||
| int timeout_seconds = 10) { | ||
| // We need to keep the ScanRecords alive since ScanRecord borrows from them |
There was a problem hiding this comment.
#331 is merged, so we can rework this to reduce boilerplate with poll with deadline pattern
|
Thank you for the review @fresh-borzoni , updated, PTAL |
fresh-borzoni
left a comment
There was a problem hiding this comment.
@leekeiabstraction Ty, LGTM!
There was a problem hiding this comment.
Pull request overview
This PR adds comprehensive C++ integration tests for the Fluss client library and refactors the CI workflow structure to be more modular and efficient.
Changes:
- Added complete C++ integration test suite covering Admin API, log tables, and KV tables
- Restructured CI workflows into separate, language-specific jobs with intelligent path-based triggering
- Updated Rust and Python tests to consistently use distributed tables with explicit bucket configuration
Reviewed changes
Copilot reviewed 14 out of 14 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| bindings/cpp/test/test_utils.h | Test infrastructure with Docker-based Fluss cluster management, GoogleTest environment setup, and utility functions for polling and assertions |
| bindings/cpp/test/test_main.cpp | GoogleTest entry point that registers the global Fluss test environment |
| bindings/cpp/test/test_admin.cpp | Integration tests for Admin API operations including database/table creation, partition management, and error handling |
| bindings/cpp/test/test_log_table.cpp | Comprehensive log table tests covering append/scan, offsets, projections, batches, data types, and partitioning |
| bindings/cpp/test/test_kv_table.cpp | KV table tests for upsert/delete/lookup, composite primary keys, partial updates, partitioning, and data types |
| bindings/cpp/CMakeLists.txt | CMake configuration additions for building and running GoogleTest-based integration tests |
| .github/workflows/ci.yml | Removed monolithic CI workflow in favor of separate specialized workflows |
| .github/workflows/check_license_and_formatting.yml | New workflow dedicated to license header and code formatting checks |
| .github/workflows/build_and_test_rust.yml | Rust-specific build and test workflow with path-based triggering to skip on binding-only changes |
| .github/workflows/build_and_test_python.yml | Python-specific build and test workflow that skips on C++ binding changes |
| .github/workflows/build_and_test_cpp.yml | C++ build and test workflow with Arrow dependency installation and test execution |
| .github/workflows/check_documentation.yml | Minor workflow name update for consistency |
| crates/fluss/tests/integration/log_table.rs | Updated to use explicit bucket distribution configuration (3 buckets distributed by "c1") |
| bindings/python/test/test_log_table.py | Updated Python tests to match the distributed table configuration |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
luoyuxia
left a comment
There was a problem hiding this comment.
@leekeiabstraction Thanks. +1
Purpose
Linked issue: close #338
Brief change log