Check file ACL and session removal after signed membership exclusion
This commit is contained in:
1 parent
c6a5c13d3f
commit
d20111318c
2 files changed
+8
-8
No files matched your search
+1
-1
@@ -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
|
||||
|
||||
@@ -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; }
|
||||
|
||||
Reference in new issue
Block a user