This is an automated email from the ASF dual-hosted git repository. mmodzelewski pushed a commit to branch java-vsr in repository https://gitbox.apache.org/repos/asf/iggy.git
commit f2c2df995ec2b0fbff8ad4f47b00ff7e05bdded8 Merge: fc0d5cfa7 7ff58de25 Author: Maciej Modzelewski <[email protected]> AuthorDate: Mon Aug 10 10:12:19 2026 +0200 Merge branch 'master' into java-vsr .github/actions/csharp-dotnet/pre-merge/action.yml | 21 +- .github/workflows/_test_bdd.yml | 12 +- .github/workflows/_test_examples.yml | 10 +- .github/workflows/coverage-baseline.yml | 17 +- bdd/README.md | 8 +- foreign/csharp/Directory.Packages.props | 1 + .../ClusterRedirectionTests.cs | 27 +- .../ConsumerGroupTests.cs | 11 +- .../FetchMessagesTests.cs | 34 +- .../Fixtures/IggyClusterFixture.cs | 250 ------ .../Fixtures/IggyServerFixture.cs | 256 +++--- .../Fixtures/IggyTlsServerFixture.cs | 7 +- .../Fixtures/RedirectionClusterFixture.cs} | 17 +- .../Fixtures/VsrCluster.cs | 438 +++++++++ .../FlushMessagesTests.cs | 61 +- .../HeaderEncryptionIntegrationTests.cs | 74 +- .../Helpers/Eventually.cs | 43 + .../IggyConsumerTests.cs | 94 +- .../IggyPublisherTests.cs | 93 +- .../IggyTlsConnectionTests.cs | 10 +- .../IggyTypedConsumerTests.cs | 20 +- .../IggyTypedPublisherTests.cs | 8 +- .../MessageEncryptionIntegrationTests.cs | 4 +- .../Iggy_SDK.Tests.Integration/OffsetTests.cs | 27 +- .../Iggy_SDK.Tests.Integration/PartitionsTests.cs | 6 +- .../PersonalAccessTokenTests.cs | 2 +- .../Iggy_SDK.Tests.Integration/RawCommandTests.cs | 12 +- .../Iggy_SDK.Tests.Integration/SegmentsTests.cs | 12 +- .../SendMessagesTests.cs | 143 ++- .../Iggy_SDK.Tests.Integration/StreamsTests.cs | 5 +- .../Iggy_SDK.Tests.Integration/SystemTests.cs | 12 +- .../Iggy_SDK.Tests.Integration/TopicsTests.cs | 37 +- .../Iggy_SDK.Tests.Integration/UsersTests.cs | 16 +- .../Vsr/VsrConsumerGroupTests.cs | 228 +++++ .../Vsr/VsrHandshakeTests.cs | 165 ++++ .../Vsr/VsrMessagingTests.cs | 165 ++++ .../Vsr/VsrMetadataTests.cs | 132 +++ .../Iggy_SDK/Configuration/AutoLoginSettings.cs | 15 + .../Configuration/IggyClientConfigurator.cs | 6 + .../Iggy_SDK/Consumers/IggyConsumer.Rented.cs | 8 +- foreign/csharp/Iggy_SDK/Consumers/IggyConsumer.cs | 10 +- .../Iggy_SDK/Consumers/IggyConsumerBuilder.cs | 5 +- .../Iggy_SDK/Consumers/IggyConsumerBuilderOfT.cs | 10 +- .../Iggy_SDK/Contracts/SendMessagesResponse.cs | 77 ++ .../Exceptions/IggyInvalidStatusCodeException.cs | 12 +- .../VsrRequestOutcomeUnknownException.cs | 33 + ...eException.cs => VsrSessionEvictedException.cs} | 22 +- .../csharp/Iggy_SDK/Factory/IggyClientFactory.cs | 17 +- .../csharp/Iggy_SDK/IggyClient/IIggyPublisher.cs | 25 +- foreign/csharp/Iggy_SDK/IggyClient/IIggySystem.cs | 5 +- .../Implementations/HttpMessageStream.cs | 100 ++- .../Implementations/TcpMessageStream.Vsr.cs | 978 +++++++++++++++++++++ .../IggyClient/Implementations/TcpMessageStream.cs | 499 +++++------ .../Implementations/TransientHttpRetryHandler.cs | 109 +++ foreign/csharp/Iggy_SDK/Iggy_SDK.csproj | 3 +- foreign/csharp/Iggy_SDK/Mappers/BinaryMapper.cs | 65 +- .../Publishers/BackgroundMessageProcessor.cs | 43 +- .../csharp/Iggy_SDK/Publishers/IggyPublisher.cs | 51 +- .../Iggy_SDK/Publishers/IggyPublisherBuilder.cs | 3 +- .../Iggy_SDK/Publishers/IggyPublisherBuilderOfT.cs | 9 +- .../csharp/Iggy_SDK/Publishers/IggyPublisherOfT.cs | 35 +- foreign/csharp/Iggy_SDK/Utils/BufferSizes.cs | 1 - foreign/csharp/Iggy_SDK/Utils/CommandCodes.cs | 3 + foreign/csharp/Iggy_SDK/Utils/ServerAddress.cs | 139 +++ .../{Utils/BufferSizes.cs => Vsr/Command2.cs} | 14 +- foreign/csharp/Iggy_SDK/Vsr/ConsensusSession.cs | 223 +++++ .../Iggy_SDK/Vsr/ConsumerGroupClientState.cs | 301 +++++++ foreign/csharp/Iggy_SDK/Vsr/CredentialBounds.cs | 66 ++ .../AutoLoginSettings.cs => Vsr/EvictionReason.cs} | 37 +- foreign/csharp/Iggy_SDK/Vsr/LoginRegister.cs | 168 ++++ foreign/csharp/Iggy_SDK/Vsr/SyncConsumerGroup.cs | 61 ++ foreign/csharp/Iggy_SDK/Vsr/VsrError.cs | 61 ++ foreign/csharp/Iggy_SDK/Vsr/VsrHeader.cs | 156 ++++ foreign/csharp/Iggy_SDK/Vsr/VsrNamespace.cs | 251 ++++++ foreign/csharp/Iggy_SDK/Vsr/VsrOperation.cs | 275 ++++++ foreign/csharp/Iggy_SDK/Vsr/VsrReplyDecoder.cs | 206 +++++ .../ClientTests/IggyClientFactoryTests.cs | 67 ++ .../ConsumerTests/IggyConsumerBuilderTests.cs | 19 + .../Iggy_SDK_Tests/MapperTests/BinaryMapper.cs | 76 ++ .../PublisherTests/IggyPublisherBuilderTests.cs | 47 + .../PublisherTests/IggyTypedPublisherTests.cs | 4 +- .../Iggy_SDK_Tests/UtilityTests/SendUnitTests.cs | 7 +- .../VsrTests/ConsensusSessionTests.cs | 218 +++++ .../VsrTests/ConsumerGroupClientStateTests.cs | 176 ++++ .../VsrTests/CredentialBoundsTests.cs | 72 ++ .../Iggy_SDK_Tests/VsrTests/LoginRegisterTests.cs | 165 ++++ .../Iggy_SDK_Tests/VsrTests/ServerAddressTests.cs | 85 ++ .../VsrTests/SyncConsumerGroupTests.cs | 93 ++ .../Iggy_SDK_Tests/VsrTests/VsrHeaderTests.cs | 292 ++++++ .../Iggy_SDK_Tests/VsrTests/VsrNamespaceTests.cs | 282 ++++++ .../Iggy_SDK_Tests/VsrTests/VsrOperationTests.cs | 167 ++++ .../VsrTests/VsrProtocolDriftTests.cs | 849 ++++++++++++++++++ .../VsrTests/VsrReplyDecoderTests.cs | 293 ++++++ .../Iggy_SDK_Tests/VsrTests/VsrTestPayloads.cs | 102 +++ foreign/csharp/README.md | 106 ++- scripts/run-bdd-tests.sh | 6 +- scripts/run-examples-from-readme.sh | 7 +- 97 files changed, 8520 insertions(+), 1193 deletions(-) diff --cc .github/workflows/_test_bdd.yml index 8d8358f04,a423a7502..811b6b6e6 --- a/.github/workflows/_test_bdd.yml +++ b/.github/workflows/_test_bdd.yml @@@ -53,11 -53,11 +53,11 @@@ jobs run: | # The VSR lanes need the vsr feature on both the server and the CLI, # otherwise the CLI cannot frame requests for the VSR wire protocol -- # and the healthcheck ping fails. The Go SDK speaks only VSR and the - # Python wheels and the Java SDK are vsr-built, so those suites are - # Python wheels and the .NET SDK are vsr-built, so those suites are -- # always on this branch. ++ # and the healthcheck ping fails. The Go SDK speaks only VSR, while ++ # the Python wheels, Java SDK, and .NET SDK are vsr-built, so those ++ # suites are always on this branch. case "${{ inputs.task }}" in - bdd-rust-vsr|bdd-go|bdd-go-race|bdd-python|bdd-node-vsr|bdd-java) - bdd-rust-vsr|bdd-go|bdd-go-race|bdd-python|bdd-node-vsr|bdd-csharp) ++ bdd-rust-vsr|bdd-go|bdd-go-race|bdd-python|bdd-node-vsr|bdd-csharp|bdd-java) # TODO: change to iggy-server once legacy server is removed (core/server has VSR support) SERVER_BIN="iggy-server-ng" echo "Building the VSR server binary and CLI (--features vsr) for BDD tests..." @@@ -91,8 -91,8 +91,8 @@@ if: startsWith(inputs.component, 'bdd-') && startsWith(inputs.task, 'bdd-') run: | # Extract SDK name from task (format: bdd-<sdk>, or bdd-<sdk>-vsr - # for an explicit vsr lane). Python and Java have no legacy - # for an explicit vsr lane). Python and C# have no legacy lane, so - # their plain task names run vsr. ++ # for an explicit vsr lane). Python, C#, and Java have no legacy + # lane, so their plain task names run vsr. SDK_NAME=$(echo "${{ inputs.task }}" | sed 's/^bdd-//; s/-vsr$//') EXTRA_FLAGS=() case "${{ inputs.task }}" in diff --cc .github/workflows/_test_examples.yml index aa9a87734,4387c3a45..9d3e3de9d --- a/.github/workflows/_test_examples.yml +++ b/.github/workflows/_test_examples.yml @@@ -113,11 -113,11 +113,11 @@@ jobs echo "Building common binaries for all examples tests..." echo "Current directory: $(pwd)" -- # The Go SDK speaks only the VSR wire protocol and the Python wheels - # and the Java SDK are vsr-built, so those lanes need the VSR server. - # and the .NET SDK are vsr-built, so those lanes need the VSR server. -- # Every other language still runs against the legacy one until its -- # own migration lands. - if [[ "${{ inputs.task }}" == "examples-go" || "${{ inputs.task }}" == "examples-python" || "${{ inputs.task }}" == "examples-java" ]]; then - if [[ "${{ inputs.task }}" == "examples-go" || "${{ inputs.task }}" == "examples-python" || "${{ inputs.task }}" == "examples-csharp" ]]; then ++ # The Go SDK speaks only the VSR wire protocol, while the Python ++ # wheels, Java SDK, and .NET SDK are vsr-built, so those lanes need ++ # the VSR server. Every other language still runs against the legacy ++ # one until its own migration lands. ++ if [[ "${{ inputs.task }}" == "examples-go" || "${{ inputs.task }}" == "examples-python" || "${{ inputs.task }}" == "examples-csharp" || "${{ inputs.task }}" == "examples-java" ]]; then # TODO: change to iggy-server once legacy server is removed (core/server has VSR support) SERVER_BIN="iggy-server-ng" echo "Building ${SERVER_BIN} (--features vsr)..." diff --cc bdd/README.md index b231d9008,46ee69f17..e28db3533 --- a/bdd/README.md +++ b/bdd/README.md @@@ -39,7 -39,7 +39,7 @@@ bdd ├── docker-compose.server.yml # Single iggy-server test setup ├── docker-compose.cluster.yml # Leader + follower test setup ├── docker-compose.coverage.yml # Coverage collection overlay - ├── docker-compose.vsr.yml # server-ng (VSR) overlay (Rust opt-in, Java always) -├── docker-compose.vsr.yml # server-ng (VSR) overlay (rust, python, csharp) ++├── docker-compose.vsr.yml # server-ng (VSR) overlay ├── Dockerfile # Debug build of Iggy server └── README.md ``` @@@ -71,15 -71,16 +71,17 @@@ # Run only leader_redirection ../scripts/run-bdd-tests.sh all leader_redirection - # Run against iggy-server-ng with VSR (opt-in for Rust via --vsr; the - # Java suite always uses the VSR overlay). Build the vsr binaries first: -# Run against iggy-server-ng with VSR (Rust, Python, and C# SDKs; the -# other SDKs do not speak the VSR wire protocol yet). Python and C# are -# vsr-built, so their plain lanes above already run vsr in CI. -# Build the vsr binaries first: ++# Run against iggy-server-ng with VSR. Go and Java always use the VSR ++# overlay. Python and C# are vsr-built, so CI supplies --vsr for their ++# plain lanes. Rust and Node opt in with --vsr. Build the binaries first: # cargo build --bin iggy-server-ng --bin iggy --features vsr # NOTE: `target/debug/iggy` is shared between lanes and the vsr flavour # speaks a different wire protocol. When switching back to the legacy # lane, rebuild without `--features vsr` first, or the in-container # healthcheck ping cannot talk to the legacy server. ../scripts/run-bdd-tests.sh --vsr rust ++../scripts/run-bdd-tests.sh --vsr csharp +../scripts/run-bdd-tests.sh java # Clean up Docker resources ../scripts/run-bdd-tests.sh clean diff --cc scripts/run-bdd-tests.sh index 6e5d30298,ce2ffdc5b..c95de1cb4 --- a/scripts/run-bdd-tests.sh +++ b/scripts/run-bdd-tests.sh @@@ -56,12 -55,9 +56,12 @@@ usage() if [ "$VSR" = "1" ]; then case "$SDK" in - rust|python|go|go-race|node|clean) ;; + rust|python|go|go-race|node|csharp|clean) ;; + java) + # Redundant: the Java suite applies the VSR overlay unconditionally. + VSR=0 ;; *) - log "❌ --vsr supports only the Rust, Python, Go, Node, and Java SDKs so far" - log "❌ --vsr supports only the Rust, Python, Go, Node, and C# SDKs so far" ++ log "❌ --vsr supports only the Rust, Python, Go, Node, C#, and Java SDKs so far" usage exit 2 ;; esac
