From 44e04eb2e220f87743d5b4b51bed609ce988c593 Mon Sep 17 00:00:00 2001 From: Johnathan Corgan Date: Sun, 26 Jul 2026 14:02:12 +0000 Subject: [PATCH] Retire the tcp-chain static test topology The tcp-chain profile has never been runnable. ping-test.sh dispatches on chain and mesh only, and the string tcp-chain has never appeared in that script in its history, so invoking the profile has always fallen through to the unknown-profile branch: silently asserting nothing before that branch was made to fail, and exiting 2 since. Neither runner referenced it either. What it would have covered is already covered. The chaos tcp-mesh scenario runs in local CI and gives TCP a discriminating gate: n04's only edges are TCP, so if the transport were broken n04 could not parent and the scenario's baseline assertion would fail. It also carries a pure-TCP two-hop path, n01 to n04 to n05, under netem and link flaps. The only residual tcp-chain would have added is a mesh with no UDP present anywhere, which is not worth a fixture that has never run. Remove the topology, its three compose services, and the documentation rows. Every profile the static compose file still defines is now exercised by a suite. Also correct the chaos README, which has listed tcp-only and tcp-chain in its transport table since those two scenarios were deleted in 9e63b42. Neither has existed for months. --- testing/README.md | 1 - testing/chaos/README.md | 7 ---- testing/static/README.md | 7 ++-- .../static/configs/topologies/tcp-chain.yaml | 29 ---------------- testing/static/docker-compose.yml | 34 ------------------- 5 files changed, 2 insertions(+), 76 deletions(-) delete mode 100644 testing/static/configs/topologies/tcp-chain.yaml diff --git a/testing/README.md b/testing/README.md index bd1ba48..0cab275 100644 --- a/testing/README.md +++ b/testing/README.md @@ -16,7 +16,6 @@ configurations. | ----------- | ----- | --------- | -------------------------------- | | mesh | 5 | UDP | Sparse mesh, 6 links, multi-hop | | chain | 5 | UDP | Linear chain, max 4-hop paths | -| tcp-chain | 3 | TCP | Linear chain over TCP (port 8443) | | rekey | 5 | UDP | Rekey integration test topology | ### [tor/](tor/) -- Tor Transport Integration diff --git a/testing/chaos/README.md b/testing/chaos/README.md index 1733a9b..994ae38 100644 --- a/testing/chaos/README.md +++ b/testing/chaos/README.md @@ -67,19 +67,12 @@ Explicit topologies exercising non-UDP transports. | ------------- | ----- | -------------- | ----- | -------- | ----- | ---------- | ------------------------------------------ | | ethernet-only | 4 | Ethernet | Ring | 90s | yes | -- | AF_PACKET transport with beacon discovery | | ethernet-mesh | 6 | UDP + Ethernet | Mesh | 120s | yes | yes | Mixed UDP/Ethernet, netem mutation + flaps | -| tcp-only | 4 | TCP | Ring | 90s | yes | -- | TCP transport with static peer config | -| tcp-chain | 4 | TCP | Chain | 90s | yes | -- | TCP multi-hop routing through chain | | tcp-mesh | 6 | UDP + TCP | Mesh | 120s | yes | yes | Mixed UDP/TCP, netem mutation + flaps | - **ethernet-only**: 4-node ring on raw Ethernet (AF_PACKET). Peers discovered via beacons, not static config. Minimal netem (1-5ms delay). - **ethernet-mesh**: Mirrors `tcp-mesh` topology but with Ethernet instead of TCP. UDP edges use static config; Ethernet edges use beacon discovery. -- **tcp-only**: 4-node ring using TCP on port 8443. Tests connect-on-send, - FMP framing over TCP, and reconnection. Netem enabled (1-10ms delay, 0-1% - loss). -- **tcp-chain**: 4-node linear chain, all TCP. Tests multi-hop routing over - TCP-only mesh. - **tcp-mesh**: 6-node mesh with 4 UDP and 3 TCP edges. Both transports use static peer config. Netem mutation (30% fraction, every 20-40s) and link flaps (1 link max, 10-20s down). diff --git a/testing/static/README.md b/testing/static/README.md index 27980ed..1924ec9 100644 --- a/testing/static/README.md +++ b/testing/static/README.md @@ -119,16 +119,13 @@ testing/static/ │ └── topologies/ │ ├── mesh.yaml # Mesh topology definition │ ├── chain.yaml # Chain topology definition -│ ├── tcp-chain.yaml # TCP chain (3 nodes, port 8443) │ └── rekey.yaml # Rekey integration test (5 nodes) ├── generated-configs/ # Auto-generated, run-scoped (gitignored) │ ├── npubs.env # NPUB_A=..., NPUB_B=..., etc. │ ├── mesh/ │ │ ├── node-a.yaml ... node-e.yaml -│ ├── chain/ -│ │ ├── node-a.yaml ... node-e.yaml -│ └── tcp-chain/ -│ ├── node-a.yaml ... node-c.yaml +│ └── chain/ +│ ├── node-a.yaml ... node-e.yaml ├── scripts/ │ ├── build.sh # Build binary + generate configs │ ├── generate-configs.sh # Generate node configs from topology diff --git a/testing/static/configs/topologies/tcp-chain.yaml b/testing/static/configs/topologies/tcp-chain.yaml deleted file mode 100644 index a36fa6d..0000000 --- a/testing/static/configs/topologies/tcp-chain.yaml +++ /dev/null @@ -1,29 +0,0 @@ -# TCP Chain Topology Definition -# -# Three nodes with TCP links forming a linear chain. Tests basic TCP -# transport connectivity, spanning tree convergence, and multi-hop -# routing over TCP. All peer connections use TCP on port 443. -# -# default_transport: tcp tells the config generator to use TCP -# transport and port 443 instead of the default UDP/2121. - -default_transport: tcp - -nodes: - a: - nsec: "0102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f20" - npub: "npub1sjlh2c3x9w7kjsqg2ay080n2lff2uvt325vpan33ke34rn8l5jcqawh57m" - docker_ip: "172.20.0.10" - peers: [b] - - b: - nsec: "b102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1fb0" - npub: "npub1tdwa4vjrjl33pcjdpf2t4p027nl86xrx24g4d3avg4vwvayr3g8qhd84le" - docker_ip: "172.20.0.11" - peers: [a, c] - - c: - nsec: "c102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1fc0" - npub: "npub1cld9yay0u24davpu6c35l4vldrhzvaq66pcqtg9a0j2cnjrn9rtsxx2pe6" - docker_ip: "172.20.0.12" - peers: [b] diff --git a/testing/static/docker-compose.yml b/testing/static/docker-compose.yml index 74b7912..7701000 100644 --- a/testing/static/docker-compose.yml +++ b/testing/static/docker-compose.yml @@ -365,40 +365,6 @@ services: networks: fips-net: - # ── TCP chain topology (A-B-C) ─────────────────────────────── - tcp-a: - <<: *fips-common - profiles: ["tcp-chain"] - container_name: fips-node-a${FIPS_CI_NAME_SUFFIX:-} - hostname: node-a - volumes: - - ../docker/resolv.conf:/etc/resolv.conf:ro - - ./generated-configs${FIPS_CI_NAME_SUFFIX:-}/tcp-chain/node-a.yaml:/etc/fips/fips.yaml:ro - networks: - fips-net: - - tcp-b: - <<: *fips-common - profiles: ["tcp-chain"] - container_name: fips-node-b${FIPS_CI_NAME_SUFFIX:-} - hostname: node-b - volumes: - - ../docker/resolv.conf:/etc/resolv.conf:ro - - ./generated-configs${FIPS_CI_NAME_SUFFIX:-}/tcp-chain/node-b.yaml:/etc/fips/fips.yaml:ro - networks: - fips-net: - - tcp-c: - <<: *fips-common - profiles: ["tcp-chain"] - container_name: fips-node-c${FIPS_CI_NAME_SUFFIX:-} - hostname: node-c - volumes: - - ../docker/resolv.conf:/etc/resolv.conf:ro - - ./generated-configs${FIPS_CI_NAME_SUFFIX:-}/tcp-chain/node-c.yaml:/etc/fips/fips.yaml:ro - networks: - fips-net: - # ── Gateway integration test (gateway + server + non-FIPS client) ─ gw-gateway: <<: *fips-common