From d20111318c304bd2e1d84c507950f3a03ae049d1 Mon Sep 17 00:00:00 2001 From: evgeny Date: Tue, 3 Nov 2026 16:34:45 +0100 Subject: [PATCH] Check file ACL and session removal after signed membership exclusion --- tests/Makefile.am | 2 +- tests/test_member_files_network.c | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/tests/Makefile.am b/tests/Makefile.am index 44d3520a3..d12a00dd1 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -1,6 +1,6 @@ # Tests Makefile.am for utun - all tests with new ll_queue library -EXTRA_DIST = fixtures/reality_openssl_hello.hex data/silero_speech.pcm data/silero_speech.txt test_net.h nat_fixture.h db_sync_fixture.h \ +EXTRA_DIST = fixtures/reality_openssl_hello.hex data/silero_speech.pcm data/silero_speech.txt test_net.h test_membership.h nat_fixture.h db_sync_fixture.h \ run_tests.py test_run_tests.py test_service_ids.py test_build_script.py local_transport_ipv6.sh stream_netns/topology.py stream_netns/network.py \ stream_netns/probe.py stream_netns/run.py stream_netns/scenario.py stream_netns/README.md stream_netns/TESTED.md \ stream_netns/test_isolation.py stream_netns/nat_scenario.py stream_netns/stun_server.py stream_netns/stun_scenario.py diff --git a/tests/test_member_files_network.c b/tests/test_member_files_network.c index c207f1d96..293486060 100644 --- a/tests/test_member_files_network.c +++ b/tests/test_member_files_network.c @@ -449,19 +449,19 @@ static void tick(void* arg) { DEBUG_INFO(DEBUG_CATEGORY_MEDIA, "member_files test: deletion published reader_local_allowed=%d server_reader_allowed=%d", reader_allowed, server_allowed); if (!reader_allowed || server_allowed) { fail(t, "deleted reader ACL fixture"); return; } - t->phase = 7; t->deletion_started = get_time_tb(); - // Оба запроса стартуют до следующего poll: последующая репликация не меняет проверяемый серверный отказ. + t->phase = 21; t->deletion_started = get_time_tb(); + struct TOPO_GROUP* group = topo_groups_find(t->nodes[SERVER]->topo_groups, GROUP); + if (topo_group_peer_ready(group, t->ids[READER])) { fail(t, "deleted reader retained group session"); return; } + /* Исключение закрывает маршрут: серверный ACL проверяем без ожидания ответа по уже снятой сессии. */ for (unsigned i = 0; i < 2; i++) { struct mf_message q = { .command = i ? MF_QUOTA : MF_STAT, .owner = t->ids[AUTHOR], .request_id = 3000 + i }; if (!i) snprintf(q.path, sizeof(q.path), "file.bin"); - if (!member_files_request(t->nodes[READER], GROUP, t->ids[SERVER], &q, deleted_response, t)) { - fail(t, "deleted reader remote request start"); return; + if (mf_server_allowed(t->nodes[SERVER]->member_files, GROUP, t->ids[READER], &q)) { + fail(t, "deleted reader server ACL accepted"); return; } } } else if (t->phase == 7 || t->phase == 21) { - if (get_time_tb() - t->deletion_started >= 100000) { fail(t, "deleted reader replies/replication timeout"); return; } - if (t->deleted_replies != 3) goto again; - if (t->deleted_wire != 3) { fail(t, "deleted reader denial did not exercise server ACL"); return; } + if (get_time_tb() - t->deletion_started >= 100000) { fail(t, "deleted reader replication timeout"); return; } t->phase = 21; if (member_files_member(t->nodes[READER], GROUP, t->ids[READER], 0)) goto again; if (!member_files_member(t->nodes[READER], GROUP, t->ids[SERVER], 1)) { fail(t, "storage role lost during deletion"); return; }