static void test_mmap_metacopy (const char * tmpFile) { Key * parentKey = keyNew (TEST_ROOT_KEY, KEY_VALUE, tmpFile, KEY_END); KeySet * conf = ksNew (0, KS_END); PLUGIN_OPEN ("mmapstorage"); KeySet * ks = metaTestKeySet (); Key * shareMeta = keyNew (0); keySetMeta (shareMeta, "sharedmeta", "shared meta key test"); Key * current; ksRewind (ks); while ((current = ksNext (ks)) != 0) { keyCopyMeta (current, shareMeta, "sharedmeta"); } KeySet * expected = ksDeepDup (ks); succeed_if (plugin->kdbSet (plugin, ks, parentKey) == 1, "kdbSet was not successful"); KeySet * returned = ksNew (0, KS_END); succeed_if (plugin->kdbGet (plugin, returned, parentKey) == 1, "kdbGet was not successful"); compare_keyset (expected, returned); ksDel (expected); ksDel (returned); keyDel (parentKey); keyDel (shareMeta); ksDel (ks); PLUGIN_CLOSE (); }
/** Prepares for kdbSet() mainloop afterwards. * * All splits which do not need sync are removed and a deep copy * of the remaining keysets is done. * * @param split the split object to work with * @ingroup split */ void elektraSplitPrepare (Split * split) { for (size_t i = 0; i < split->size;) { int inc = 1; if ((split->syncbits[i] & 1) == 1) { KeySet * n = ksDeepDup (split->keysets[i]); ksDel (split->keysets[i]); split->keysets[i] = n; } else { /* We don't need i anymore */ elektraSplitRemove (split, i); inc = 0; } i += inc; } }
static void test_mmap_set_get_large_keyset (const char * tmpFile) { Key * parentKey = keyNew (TEST_ROOT_KEY, KEY_VALUE, tmpFile, KEY_END); KeySet * conf = ksNew (0, KS_END); PLUGIN_OPEN ("mmapstorage"); KeySet * ks = largeTestKeySet (); KeySet * expected = ksDeepDup (ks); succeed_if (plugin->kdbSet (plugin, ks, parentKey) == 1, "kdbSet was not successful"); ksDel (ks); KeySet * returned = ksNew (0, KS_END); succeed_if (plugin->kdbGet (plugin, returned, parentKey) == 1, "kdbGet was not successful"); compare_keyset (expected, returned); ksDel (expected); ksDel (returned); keyDel (parentKey); PLUGIN_CLOSE (); }