diff --git a/tests/stream_netns/nat_scenario.py b/tests/stream_netns/nat_scenario.py index 8093225e..d64a2c3c 100644 --- a/tests/stream_netns/nat_scenario.py +++ b/tests/stream_netns/nat_scenario.py @@ -25,8 +25,10 @@ def check_profiles(scenario): snapshot = agents[target.name].rpc("snapshot")["snapshot"] agents[source.name].rpc("nat_link", snapshot=snapshot, socket=transport) target_id = agents[target.name].identity + source_id = agents[source.name].identity scenario.wait(f"nat-link-{source.name}-{target.name}", - lambda data: target_id in data[source.name]["direct_up"], 20) + lambda data: target_id in data[source.name]["group_ready"] and + source_id in data[target.name]["group_ready"], 20) connected.add(pair) def store_owner(owner, observer): diff --git a/tests/stream_netns/node.c b/tests/stream_netns/node.c index 9794be4d..c26c58b6 100644 --- a/tests/stream_netns/node.c +++ b/tests/stream_netns/node.c @@ -224,6 +224,13 @@ static void statistics(struct lab *lab, uint64_t id, int loads) { if (connection && connection->links_up && !connection->close_requested && connection->state != 2) printf("%s\"%" PRIu64 "\"", separator++ ? "," : "", connection->peer_node_id); } + printf("],\"group_ready\":["); separator = 0; + struct TOPO_GROUP *nat_group = topo_groups_find(lab->inst->topo_groups, TOPO_GROUP_UTUN); + for (struct ll_entry *entry = nat_group ? nat_group->nodes->head : NULL; entry; entry = entry->next) { + uint64_t peer = ((struct TOPO_GROUP_NODE *)entry)->node_id; + if (peer != lab->inst->node_id && topo_group_peer_ready(nat_group, peer)) + printf("%s\"%" PRIu64 "\"", separator++ ? "," : "", peer); + } printf("],\"streams\":["); separator = 0; for (unsigned i = 0; i < LAB_STREAMS; i++) { struct lab_stream *stream = &lab->streams[i];