Check file ACL and session removal after signed membership exclusion

This commit is contained in:
evgeny committed 2026-11-03 16:34:45 +01:00
1 parent c6a5c13d3f
commit d20111318c
2 files changed
+8 -8

No files matched your search

+1 -1
View File
@@ -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
+7 -7
View File
@@ -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; }