seokjin0414 opened a new pull request, #3554: URL: https://github.com/apache/iggy/pull/3554
## What Adds BDD coverage for the C++ SDK by implementing the shared `bdd/scenarios/basic_messaging.feature` with cucumber-cpp and wiring it into the Docker-based BDD harness and CI, the same way the other SDKs run. This is the second part of #2965; the messaging FFI it relies on landed in #3046. ## How it works cucumber-cpp only supports the Cucumber wire protocol, so the step definitions compile (via Bazel) into a wire server, and a Ruby Cucumber runner (`cucumber` + `cucumber-wire`, pinned to the versions cucumber-cpp itself tests against) drives the feature file over the wire against a real `iggy-server`. The step logic and assertions are all C++ and exercise the SDK's FFI (`get_streams`, `create_stream`, `create_topic`, `send_messages`, `poll_messages`). The step definitions live under `foreign/cpp/bdd/` rather than `bdd/cpp/` because the Bazel workspace root is `foreign/cpp` and cannot reach the repo-level `bdd/` directory. `bdd/cpp/` holds the Ruby runner harness (Dockerfile, Gemfile, `cucumber.wire`). ## Heads-up for reviewers Because cucumber-cpp is wire-protocol-only, the C++ BDD image pulls in a Ruby runtime (`cucumber` + `cucumber-wire`). Flagging this explicitly in case it changes how you'd like the harness shaped. ## Verification Ran the suite locally against a real server and the scenario passes end to end (17 steps). The existing `//:unit` and `//:low-level-e2e` targets still build, and `MODULE.bazel.lock` is consistent under `lockfile_mode=error`. The TearDown fixture and the magic-number cleanup discussed on Discord are tracked separately by @slbotbm. Closes #2965 -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
