Add regression for media availability group isolation
This commit is contained in:
1 parent
964a938437
commit
04dc53672a
2 files changed
+36
No files matched your search
@@ -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
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
Reference in new issue
Block a user