From 3dc682087a9384e516086877b0bc7335f57ef9dd Mon Sep 17 00:00:00 2001 From: evgeny Date: Sun, 11 Oct 2026 16:53:58 +0200 Subject: [PATCH] Wait for verified Merkle profiles as well as BGP reachability --- tests/stream_netns/node.c | 13 ++++++++++++- tests/stream_netns/scenario.py | 4 +++- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/tests/stream_netns/node.c b/tests/stream_netns/node.c index 39bb5061..28d09546 100644 --- a/tests/stream_netns/node.c +++ b/tests/stream_netns/node.c @@ -154,7 +154,18 @@ static void statistics(struct lab *lab, uint64_t id, int loads) { printf("%s\"%" PRIu64 "\"", separator++ ? "," : "", node->node_id); } } - printf("],\"streams\":["); separator = 0; + printf("],\"profile_status\":{"); separator = 0; + if (group) { + struct stream_member_state state; + printf("\"%" PRIu64 "\":%d", lab->inst->node_id, + stream_member_load(lab->inst, lab->group, lab->inst->node_id, &state, NULL)); separator = 1; + for (struct ll_entry *e = group->nodes->head; e; e = e->next) { + struct TOPO_GROUP_NODE *node = (struct TOPO_GROUP_NODE *)e; + printf("%s\"%" PRIu64 "\":%d", separator++ ? "," : "", node->node_id, + stream_member_load(lab->inst, lab->group, node->node_id, &state, NULL)); + } + } + printf("},\"streams\":["); separator = 0; for (unsigned i = 0; i < LAB_STREAMS; i++) { struct lab_stream *stream = &lab->streams[i]; if (!stream->source) continue; diff --git a/tests/stream_netns/scenario.py b/tests/stream_netns/scenario.py index 0cc23b16..6c1b7229 100644 --- a/tests/stream_netns/scenario.py +++ b/tests/stream_netns/scenario.py @@ -130,7 +130,9 @@ class Scenario: link = owner.rpc("invite", timeout=15)["link"] self.agents[node.name].rpc("join", link=link) identities = {agent.identity for agent in self.agents.values()} - self.wait("join-merkle-bgp", lambda s: all(set(n["online"]) == identities for n in s.values()), 120) + self.wait("join-merkle-bgp", lambda s: all(set(n["online"]) == identities and + set(n["profile_status"]) == identities and all(rc == 0 for rc in n["profile_status"].values()) + for n in s.values()), 120) source = self.agents[self.args.publisher] source_id = source.identity source.rpc("publish", seed=self.args.seed)