You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iggy.apache.org by pi...@apache.org on 2026/08/07 18:45:51 UTC
(iggy) branch go_sdk_vsr updated (4d6506b6d -> ade1e65f5)
This is an automated email from the ASF dual-hosted git repository.
spetz pushed a change to branch go_sdk_vsr
in repository https://gitbox.apache.org/repos/asf/iggy.git
from 4d6506b6d switch to single-node e2e test
add 02c24b399 feat(python): run Python SDK tests only against the VSR server (#3838)
new ade1e65f5 Resolve conflicts, add missing Node VSR tests to CI
The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
Summary of changes:
.../actions/python-maturin/pre-merge/action.yml | 42 ++++++++++++----------
.github/config/components.yml | 2 +-
.github/workflows/_test_bdd.yml | 19 +++++-----
.github/workflows/_test_examples.yml | 13 +++----
.github/workflows/coverage-baseline.yml | 21 +++++++++++
bdd/docker-compose.vsr.yml | 8 ++++-
.../tests/server/topic_admission_vsr.rs | 20 ++++++++++-
core/server-ng/src/responses.rs | 6 ++--
foreign/node/src/bdd/auth.ts | 3 ++
foreign/python/Cargo.toml | 4 ++-
foreign/python/tests/test_message_operations.py | 17 ++++-----
foreign/python/tests/test_tls.py | 11 ++++--
foreign/python/tests/test_topic.py | 18 +++++-----
foreign/python/tests/utils.py | 33 ++++++++++++++++-
scripts/run-bdd-tests.sh | 6 ++--
scripts/run-examples-from-readme.sh | 11 ++++--
scripts/utils.sh | 11 +++---
17 files changed, 176 insertions(+), 69 deletions(-)
(iggy) 01/01: Resolve conflicts, add missing Node VSR tests to CI
Posted by pi...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
spetz pushed a commit to branch go_sdk_vsr
in repository https://gitbox.apache.org/repos/asf/iggy.git
commit ade1e65f5e708be7ef06dddf7fd562621afbf01e
Merge: 4d6506b6d 02c24b399
Author: spetz <pi...@gmail.com>
AuthorDate: Fri Aug 7 20:45:32 2026 +0200
Resolve conflicts, add missing Node VSR tests to CI
.../actions/python-maturin/pre-merge/action.yml | 42 ++++++++++++----------
.github/config/components.yml | 2 +-
.github/workflows/_test_bdd.yml | 19 +++++-----
.github/workflows/_test_examples.yml | 13 +++----
.github/workflows/coverage-baseline.yml | 21 +++++++++++
bdd/docker-compose.vsr.yml | 8 ++++-
.../tests/server/topic_admission_vsr.rs | 20 ++++++++++-
core/server-ng/src/responses.rs | 6 ++--
foreign/node/src/bdd/auth.ts | 3 ++
foreign/python/Cargo.toml | 4 ++-
foreign/python/tests/test_message_operations.py | 17 ++++-----
foreign/python/tests/test_tls.py | 11 ++++--
foreign/python/tests/test_topic.py | 18 +++++-----
foreign/python/tests/utils.py | 33 ++++++++++++++++-
scripts/run-bdd-tests.sh | 6 ++--
scripts/run-examples-from-readme.sh | 11 ++++--
scripts/utils.sh | 11 +++---
17 files changed, 176 insertions(+), 69 deletions(-)
diff --cc .github/config/components.yml
index 7b427500e,a2ec096d5..0f140ad71
--- a/.github/config/components.yml
+++ b/.github/config/components.yml
@@@ -370,7 -360,7 +370,7 @@@ components
paths:
- "bdd/node/**"
- "bdd/scenarios/**"
-- tasks: ["bdd-node"]
++ tasks: ["bdd-node", "bdd-node-vsr"]
bdd-csharp:
depends_on:
diff --cc .github/workflows/_test_bdd.yml
index 59367809e,17258cf18..5640e1bbb
--- a/.github/workflows/_test_bdd.yml
+++ b/.github/workflows/_test_bdd.yml
@@@ -51,15 -51,15 +51,16 @@@ jobs
- name: Build server for BDD tests
if: startsWith(inputs.component, 'bdd-') && startsWith(inputs.task, 'bdd-')
run: |
- case "${{ inputs.task }}" in bdd-rust-vsr|bdd-python)
- # vsr lane: the feature must be enabled on both the server
- # and the CLI, otherwise the CLI cannot frame requests for
- # the VSR wire protocol (healthcheck ping would fail).
- # Python wheels are vsr-built, so the whole lane runs vsr.
- # TODO(hubcio): change to iggy-server once legacy server is
- # removed (core/server has VSR support)
+ # 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, so its
- # suites are always on this branch.
++ # and the healthcheck ping fails. The Go SDK speaks only VSR and the
++ # Python wheels are vsr-built, so those suites are always on this
++ # branch.
+ case "${{ inputs.task }}" in
- bdd-rust-vsr|bdd-go|bdd-go-race)
++ bdd-rust-vsr|bdd-go|bdd-go-race|bdd-python|bdd-node-vsr)
+ # TODO: change to iggy-server once legacy server is removed (core/server has VSR support)
SERVER_BIN="iggy-server-ng"
- echo "Building server binary and CLI (--features vsr) for BDD tests..."
+ echo "Building the VSR server binary and CLI (--features vsr) for BDD tests..."
cargo build --locked --bin iggy-server-ng --bin iggy --features vsr
;;
*)
@@@ -90,20 -90,14 +91,20 @@@
if: startsWith(inputs.component, 'bdd-') && startsWith(inputs.task, 'bdd-')
run: |
# Extract SDK name from task (format: bdd-<sdk>, or bdd-<sdk>-vsr
- # for the server-ng lane)
- SDK_NAME=$(echo "${{ inputs.task }}" | sed 's/^bdd-//')
+ # for an explicit vsr lane). Python has no legacy lane, so its
+ # plain task name runs vsr.
+ SDK_NAME=$(echo "${{ inputs.task }}" | sed 's/^bdd-//; s/-vsr$//')
EXTRA_FLAGS=()
- case "$SDK_NAME" in
- rust-vsr)
- SDK_NAME="rust"
- case "${{ inputs.task }}" in bdd-rust-vsr|bdd-python)
++ case "${{ inputs.task }}" in
++ bdd-rust-vsr|bdd-python|bdd-node-vsr)
EXTRA_FLAGS+=(--vsr)
- # TODO(hubcio): change to iggy-server once legacy server is
- # removed (core/server has VSR support)
+ # TODO: change to iggy-server once legacy server is removed (core/server has VSR support)
+ export IGGY_SERVER_NG_PATH="target/debug/iggy-server-ng"
+ echo "Server binary location: $(ls -lh target/debug/iggy-server-ng)"
+ ;;
- go|go-race)
++ bdd-go|bdd-go-race)
+ # The Go SDK speaks only VSR, so the runner forces the overlay.
+ # TODO: change to iggy-server once legacy server is removed (core/server has VSR support)
export IGGY_SERVER_NG_PATH="target/debug/iggy-server-ng"
echo "Server binary location: $(ls -lh target/debug/iggy-server-ng)"
;;
diff --cc .github/workflows/_test_examples.yml
index f93ae575b,2335aa325..3fdb10474
--- a/.github/workflows/_test_examples.yml
+++ b/.github/workflows/_test_examples.yml
@@@ -113,14 -113,15 +113,15 @@@ jobs
echo "Building common binaries for all examples tests..."
echo "Current directory: $(pwd)"
- # The Go SDK speaks only the VSR wire protocol, so its lane needs the
- # VSR server. Every other language still runs against the legacy one
- # until its own migration lands.
- if [[ "${{ inputs.task }}" == "examples-go" ]]; then
- # Python wheels are vsr-built, so the Python examples run
- # against the vsr server; every other language still runs
- # against the legacy server.
- if [[ "${{ inputs.task }}" == "examples-python" ]]; then
- # TODO(hubcio): change to iggy-server once legacy server is
- # removed (core/server has VSR support)
++ # The Go SDK speaks only the VSR wire protocol and the Python wheels
++ # 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" ]]; 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)..."
- cargo build --locked --bin iggy-server-ng --features vsr
+ cargo build --locked --bin "${SERVER_BIN}" --features vsr
else
SERVER_BIN="iggy-server"
echo "Building ${SERVER_BIN}..."
diff --cc bdd/docker-compose.vsr.yml
index af414d60b,af414d60b..9aaf51d37
--- a/bdd/docker-compose.vsr.yml
+++ b/bdd/docker-compose.vsr.yml
@@@ -29,7 -29,7 +29,7 @@@
# The leader_redirection feature runs a REAL 2-node VSR cluster here
# (initial leader = replica 0), not the legacy mock `--follower` server.
#
--# Activated by: ./scripts/run-bdd-tests.sh --vsr rust [feature]
++# Activated by: ./scripts/run-bdd-tests.sh --vsr <sdk> [feature]
# Must be passed LAST so its overrides win over the server/cluster files.
x-server-ng-image: &server-ng-image
@@@ -65,6 -65,6 +65,12 @@@ services
- IGGY_ROOT_USERNAME=iggy
- IGGY_ROOT_PASSWORD=iggy
++ # The Node SDK picks the wire protocol at runtime; classic is its default,
++ # so the VSR lane has to opt in explicitly.
++ node-bdd:
++ environment:
++ - IGGY_TEST_PROTOCOL=vsr
++
iggy-leader:
<<: *server-ng-image
command: [ "--replica-id", "0" ]
diff --cc foreign/node/src/bdd/auth.ts
index 147327ee1,147327ee1..a67e49692
--- a/foreign/node/src/bdd/auth.ts
+++ b/foreign/node/src/bdd/auth.ts
@@@ -18,14 -18,14 +18,17 @@@
import assert from 'node:assert/strict';
import { Client } from '../client/index.js';
++import type { Protocol } from '../client/index.js';
import { Given } from "@cucumber/cucumber";
import type { TestWorld } from './world.js';
import { getIggyAddress } from '../tcp.sm.utils.js';
const credentials = { username: 'iggy', password: 'iggy' };
const [host, port] = getIggyAddress();
++const protocol: Protocol = process.env.IGGY_TEST_PROTOCOL === 'vsr' ? 'vsr' : 'classic';
const opt = {
++ protocol,
transport: 'TCP' as const,
options: { host, port },
credentials
diff --cc scripts/run-bdd-tests.sh
index f37883f48,bbad9f710..37d47315a
--- a/scripts/run-bdd-tests.sh
+++ b/scripts/run-bdd-tests.sh
@@@ -39,11 -39,11 +39,11 @@@ usage()
log ""
log " sdk: rust | python | php | go | go-race | node | csharp | java | cpp | all | clean (default: all)"
log " feature: basic_messaging | leader_redirection | raw_command | all (default: all)"
- log " --vsr: run against iggy-server-ng built with --features vsr (rust and go);"
- # TODO(hubcio): change to iggy-server once legacy server is removed
- # (core/server has VSR support)
- log " --vsr: run against iggy-server-ng built with --features vsr (rust and python);"
+ # TODO: change to iggy-server once legacy server is removed (core/server has VSR support)
++ log " --vsr: run against iggy-server-ng built with --features vsr (rust, python, go, node);"
log " expects IGGY_SERVER_NG_PATH (default: target/debug/iggy-server-ng)"
- log " and a vsr-built iggy CLI at IGGY_CLI_PATH"
+ log " and a vsr-built iggy CLI at IGGY_CLI_PATH."
+ log " The go suites imply it: the Go SDK speaks only the VSR protocol."
log ""
log "Examples:"
log " $0 rust # run all features for Rust"
@@@ -55,9 -55,9 +55,9 @@@
if [ "$VSR" = "1" ]; then
case "$SDK" in
- rust|go|go-race|clean) ;;
- rust|python|clean) ;;
++ rust|python|go|go-race|node|clean) ;;
*)
- log "❌ --vsr supports only the Rust and Go SDKs so far"
- log "❌ --vsr supports only the Rust and Python SDKs (server-ng speaks the VSR wire protocol)"
++ log "❌ --vsr supports only the Rust, Python, Go, and Node SDKs so far"
usage
exit 2 ;;
esac
diff --cc scripts/utils.sh
index 72257166a,2e45d756a..fb84c8b6a
--- a/scripts/utils.sh
+++ b/scripts/utils.sh
@@@ -159,17 -159,17 +159,19 @@@ readonly EXAMPLES_SERVER_TIMEOUT=30
readonly EXAMPLES_STOP_TIMEOUT=5
# Resolve and validate the server binary path.
-# Usage: resolve_server_binary [target] [binary-name]
-# Sets global SERVER_BIN. binary-name defaults to iggy-server; vsr lanes
-# pass their server binary (built with --features vsr so the wire
-# protocol matches vsr-built clients).
+# Usage: resolve_server_binary [target] [binary_name] [cargo_features]
- # Sets global SERVER_BIN.
++# Sets global SERVER_BIN. binary_name defaults to iggy-server; vsr lanes
++# pass their server binary and the vsr feature (so the wire protocol
++# matches vsr-built clients).
function resolve_server_binary() {
local target="${1:-}"
- local binary_name="${2:-iggy-server}"
+ local binary="${2:-iggy-server}"
+ local features="${3:-}"
+
if [ -n "${target}" ]; then
- SERVER_BIN="target/${target}/debug/${binary_name}"
+ SERVER_BIN="target/${target}/debug/${binary}"
else
- SERVER_BIN="target/debug/${binary_name}"
+ SERVER_BIN="target/debug/${binary}"
fi
if [ ! -f "${SERVER_BIN}" ]; then
@@@ -239,33 -236,9 +241,34 @@@ function start_tls_server()
echo $! >"${EXAMPLES_PID_FILE}"
}
-# Block until the server logs readiness or timeout. Matches both the
-# legacy line ("has started") and the vsr server line ("client
-# listeners started", logged once the TCP socket is bound).
+# How wait_for_server_ready decides the server is up. "log" greps the startup
- # line. "tcp" polls the listener instead, which is what a lane running the VSR
- # server needs: it prints no such line.
++# lines: the legacy "has started" and the VSR server "client listeners
++# started" (logged once the TCP socket is bound). "tcp" polls the listener
++# instead for lanes that cannot rely on a startup line.
+: "${SERVER_READY_PROBE:=log}"
+: "${SERVER_READY_ADDRESS:=127.0.0.1:8090}"
+
+# Report whether the server is accepting work.
+function server_is_ready() {
+ if [ "${SERVER_READY_PROBE}" = "tcp" ]; then
+ local host="${SERVER_READY_ADDRESS%:*}"
+ local port="${SERVER_READY_ADDRESS##*:}"
+ (exec 3<>"/dev/tcp/${host}/${port}") 2>/dev/null || return 1
+ exec 3<&-
+ return 0
+ fi
- grep -q "has started" "${EXAMPLES_LOG_FILE}"
++ grep -qE "has started|client listeners started" "${EXAMPLES_LOG_FILE}"
+}
+
+# Report whether the server this script started is still running.
+function server_is_alive() {
+ local pid
+ pid="$(cat "${EXAMPLES_PID_FILE}" 2>/dev/null)" || return 0
+ [ -n "${pid}" ] || return 0
+ kill -0 "${pid}" 2>/dev/null
+}
+
+# Block until the server is ready or the timeout elapses.
# Usage: wait_for_server_ready [label]
function wait_for_server_ready() {
local label="${1:-Iggy}"