Add regression for media availability group isolation

This commit is contained in:
evgeny committed 2026-10-22 20:43:51 +02:00
1 parent 964a938437
commit 04dc53672a
2 files changed
+36

No files matched your search

+6
View File
@@ -901,6 +901,12 @@ test_media_query_CFLAGS = $(test_media_delivery_download_CFLAGS)
test_media_query_LDADD = $(LIBUTUN) $(CRYPTO_LIBS) $(COMMON_LIBS)
test_media_query_LDFLAGS = -Wl,--wrap=etcp_route_send -Wl,--wrap=RAND_bytes
check_PROGRAMS += test_media_replication
test_media_replication_SOURCES = test_media_replication.c media_delivery_fixture.h
test_media_replication_CFLAGS = $(test_media_delivery_download_CFLAGS)
test_media_replication_LDADD = $(LIBUTUN) $(CRYPTO_LIBS) $(COMMON_LIBS)
test_media_replication_LDFLAGS = -Wl,--wrap=etcp_route_send -Wl,--wrap=RAND_bytes
if OS_LINUX
check_PROGRAMS += test_media_blocks
test_media_blocks_SOURCES = test_media_blocks.c media_delivery_fixture.h
+30
View File
@@ -0,0 +1,30 @@
/* Репликация: настоящие обработчики media/SQLite, управляемый транспорт и ошибки. */
#include "media_delivery_fixture.h"
static sqlite3_int64 scalar(sqlite3* db, const char* sql) {
sqlite3_stmt* st = NULL; REQUIRE(sqlite3_prepare_v2(db, sql, -1, &st, NULL) == SQLITE_OK);
REQUIRE(sqlite3_step(st) == SQLITE_ROW);
sqlite3_int64 value = sqlite3_column_int64(st, 0);
REQUIRE(sqlite3_finalize(st) == SQLITE_OK); return value;
}
/* Группа сообщения задаётся router; другое значение внутри HAVE не даёт записать чужую группу. */
static void test_group_boundary(void) {
struct UTUN_INSTANCE* a = instance(SERVER);
a->md.is_supernode = 1;
struct packet p = {.from = CLIENT, .to = SERVER, .group = GROUP, .len = MEDIA_HAVE_BLOCK_SIZE};
struct media_pkt_have_block* hb = (struct media_pkt_have_block*)p.data;
hb->subcmd = MEDIA_SUBCMD_HAVE_BLOCK; hb->group_id = GROUP + 1; hb->block_id[0] = 1; hb->timestamp = 1;
receive(a, &p);
REQUIRE(scalar(a->md.db, "SELECT COUNT(*) FROM block_availability WHERE group_id=112") == 0);
destroy(a); reset();
}
int main(void) {
debug_config_init(); debug_set_level(DEBUG_LEVEL_ERROR);
ua = uasync_create(); REQUIRE(ua);
test_group_boundary();
uasync_destroy(ua, 0);
DEBUG_ERROR(DEBUG_CATEGORY_DEBUG, "media replication regressions: PASS");
return 0;
}