This directory contains cross-SDK Behavior-Driven Development (BDD) tests for Apache Iggy, designed to ensure consistency across different language SDKs.
bdd/ ├── scenarios/ # Shared Gherkin feature files │ ├── basic_messaging.feature │ └── leader_redirection.feature ├── rust/ # Rust SDK BDD implementation │ ├── Dockerfile # Rust BDD test container │ ├── tests/ │ └── Cargo.toml ├── python/ # Python SDK BDD implementation │ ├── Dockerfile # Python BDD test container │ ├── tests/ │ ├── pyproject.toml │ └── uv.lock ├── go/ # Go SDK BDD implementation │ ├── Dockerfile # Go BDD test container │ ├── tests/ │ ├── go.mod │ └── go.sum ├── node/ # Node SDK BDD implementation │ └── Dockerfile # Node BDD test container ├── csharp/ # csharp SDK BDD implementation │ └── Dockerfile # csharp BDD test container ├── java/ # Java SDK BDD implementation │ ├── Dockerfile # Java BDD test container │ ├── src/test/ │ └── build.gradle.kts ├── php/ # PHP SDK BDD implementation │ ├── Dockerfile # PHP BDD test container │ ├── phpunit.xml.dist │ └── tests/ ├── docker-compose.yml # Base: SDK test clients (always included) ├── docker-compose.server.yml # Single iggy-server test setup ├── docker-compose.cluster.yml # Leader + follower test setup ├── docker-compose.coverage.yml # Coverage collection overlay ├── Dockerfile # Debug build of Iggy server └── README.md
# Usage: ../scripts/run-bdd-tests.sh [--coverage] <sdk> [feature] # sdk: rust | python | php | go | go-race | node | csharp | java | all | clean (default: all) # feature: basic_messaging | leader_redirection | all (default: all) # Run all features for all SDKs ../scripts/run-bdd-tests.sh all # Run specific SDK tests (all features) ../scripts/run-bdd-tests.sh rust ../scripts/run-bdd-tests.sh python ../scripts/run-bdd-tests.sh go ../scripts/run-bdd-tests.sh node ../scripts/run-bdd-tests.sh csharp ../scripts/run-bdd-tests.sh java ../scripts/run-bdd-tests.sh php # Run only basic_messaging feature for Rust SDK ../scripts/run-bdd-tests.sh rust basic_messaging # Run only leader_redirection ../scripts/run-bdd-tests.sh all leader_redirection # Clean up Docker resources ../scripts/run-bdd-tests.sh clean
docker-compose.server.yml runs a single Iggy server; docker-compose.cluster.yml adds a leader + follower pair for cluster scenarios.feature files for consistencyTo add a new SDK (e.g., Node.js):
node/ directorynode/Dockerfile with appropriate runtime and dependenciesnode/tests/ directory with BDD implementationnode-bdd service to docker-compose.yml../scripts/run-bdd-tests.sh scriptGitHub Actions workflow: ci-test-bdd.yml
The Rust implementation is located in bdd/rust/ and linked via Docker volumes.
The Python implementation is in bdd/python/tests/ and needs to be updated as the Python SDK API evolves.
The Go implementation is located in bdd/go/tests/.
The node.js BDD test are run by cucumber-js, bdd test code is located at foreign/node/src/bdd
The csharp implementation is located at foreign/csharp/Iggy_SDK.Tests.BDD
The Java implementation is located in java/src/test/
The PHP implementation is located in bdd/php/tests/ and runs through PHPUnit.
Add new .feature files to the bdd/scenarios/ directory and implement the corresponding step definitions in each SDK's test directory.