nostrdb

an unfairly fast embedded nostr database backed by lmdb
git clone git://jb55.com/nostrdb
Log | Files | Refs | Submodules | README | LICENSE

commit c222f0e8b09187200ee3f4f4a787849ca904d0d7
parent 34d7d1bfdaf328171810834234bcacd72a53d29c
Author: William Casarin <jb55@jb55.com>
Date:   Sun, 24 Sep 2023 15:16:43 -0700

test: test profile updates

This seems to be working, so maybe there is an ingestion problem when
updating profiles on the Damus iOS side?

Diffstat:
Mtest.c | 48++++++++++++++++++++++++++++++++++++++++++++++--
Atestdata/profile-updates.json | 3+++
2 files changed, 49 insertions(+), 2 deletions(-)

diff --git a/test.c b/test.c @@ -77,11 +77,56 @@ static void test_profile_search(struct ndb *ndb) ndb_end_query(&txn); } +static void test_profile_updates() +{ + static const int alloc_size = 1024 * 1024; + char *json = malloc(alloc_size); + struct ndb *ndb; + size_t mapsize, len; + void *record; + int written, ingester_threads; + struct ndb_txn txn; + uint64_t key; + + mapsize = 1024 * 1024 * 100; + ingester_threads = 1; + + assert(ndb_init(&ndb, test_dir, mapsize, ingester_threads, 0)); + + read_file("testdata/profile-updates.json", (unsigned char*)json, alloc_size, &written); + + assert(ndb_process_events(ndb, json, written)); + + ndb_destroy(ndb); + + assert(ndb_init(&ndb, test_dir, mapsize, ingester_threads, 0)); + + assert(ndb_begin_query(ndb, &txn)); + const unsigned char pk[32] = { + 0x87, 0xfb, 0xc6, 0xd5, 0x98, 0x31, 0xa8, 0x23, 0xa4, 0x5d, + 0x10, 0x1f, 0x86, 0x94, 0x2c, 0x41, 0xcd, 0xe2, 0x90, 0x23, + 0xf4, 0x09, 0x20, 0x24, 0xa2, 0x7c, 0x50, 0x10, 0x3c, 0x15, + 0x40, 0x01 + }; + record = ndb_get_profile_by_pubkey(&txn, pk, &len, &key); + + assert(record); + int res = NdbProfileRecord_verify_as_root(record, len); + assert(res == 0); + + NdbProfileRecord_table_t profile_record = NdbProfileRecord_as_root(record); + NdbProfile_table_t profile = NdbProfileRecord_profile_get(profile_record); + const char *name = NdbProfile_name_get(profile); + + assert(!strcmp(name, "c")); + + ndb_destroy(ndb); +} + static void test_load_profiles() { static const int alloc_size = 1024 * 1024; char *json = malloc(alloc_size); - unsigned char *buf = malloc(alloc_size); struct ndb *ndb; size_t mapsize; int written, ingester_threads; @@ -115,7 +160,6 @@ static void test_load_profiles() ndb_destroy(ndb); free(json); - free(buf); } static void test_fuzz_events() { diff --git a/testdata/profile-updates.json b/testdata/profile-updates.json @@ -0,0 +1,3 @@ +["EVENT","a",{"id": "9b2861dda8fc602ec2753f92f1a443c9565de606e0c8f4fd2db4f2506a3b13ca","pubkey": "87fbc6d59831a823a45d101f86942c41cde29023f4092024a27c50103c154001","created_at": 1695593347,"kind": 0,"tags": [],"content": "{\"name\":\"a\"}","sig": "f48da228f8967d33c3caf0a78f853b5144631eb86c7777fd25949123a5272a92765a0963d4686dd0efe05b7a9b986bfac8d43070b234153acbae5006d5a90f31"}] +["EVENT","b",{"id": "a44eb8fb6931d6155b04038bef0624407e46c85c61e5758392cbb615f00184ca","pubkey": "87fbc6d59831a823a45d101f86942c41cde29023f4092024a27c50103c154001","created_at": 1695593354,"kind": 0,"tags": [],"content": "{\"name\":\"b\"}","sig": "7540bbde4b4479275e20d95acaa64027359a73989927f878825093cba2f468bd8e195919a77b4c230acecddf92e6b4bee26918b0c0842f84ec7c1fae82453906"}] +["EVENT","c",{"id": "3090cdba2889acf1279efbf598e7e1cc701259c329cb11309a495f6c5204a7f6","pubkey": "87fbc6d59831a823a45d101f86942c41cde29023f4092024a27c50103c154001","created_at": 1695593357,"kind": 0,"tags": [],"content": "{\"name\":\"c\"}","sig": "f143edd4a8e60d882b0a19c7a4ee896a0c99da285fceab1ea704c5a9b6110f7b6983fe3c4a0a316c8ab1aa971323639a6049033c253a8c3684f99f76e781aa7c"}]