TEST_F (Simple, SetSystemGetAppend2) { using namespace kdb; KDB kdb; KeySet ks; Key parentKey (testRoot, KEY_END); ks.append (Key ("system" + testRoot + "key", KEY_VALUE, "value1", KEY_END)); kdb.get (ks, parentKey); ASSERT_EQ (ks.size (), 1) << "got keys from freshly mounted backends"; ks.rewind (); ks.next (); EXPECT_EQ (ks.current ().getName (), "system/tests/kdb/key") << "name of element in keyset wrong"; EXPECT_EQ (ks.current ().getString (), "value1") << "string of element in keyset wrong"; kdb.set (ks, parentKey); kdb.close (parentKey); KeySet ks2; ks2.append (Key ("system" + testRoot + "key2", KEY_VALUE, "value2", KEY_END)); kdb.open (parentKey); kdb.get (ks2, parentKey); ks2.rewind (); ks2.next (); ASSERT_EQ (ks2.size (), 1) << "wrong size"; EXPECT_EQ (ks2.current ().getName (), "system/tests/kdb/key") << "name of element in keyset wrong"; EXPECT_EQ (ks2.current ().getString (), "value1") << "string of element in keyset wrong"; }
TEST_F (Simple, GetAppendMeta) { using namespace kdb; KDB kdb; KeySet ks; ks.append (Key ("meta/key", KEY_META_NAME, KEY_END)); Key parentKey (testRoot, KEY_END); kdb.get (ks, parentKey); ASSERT_EQ (ks.size (), 1) << "no key stayed"; ks.rewind (); ks.next (); EXPECT_EQ (ks.current ().getName (), "meta/key") << "name of element in keyset wrong"; EXPECT_EQ (ks.current ().getString (), "") << "string of element in keyset wrong"; kdb.set (ks, parentKey); ks.rewind (); ks.next (); EXPECT_EQ (ks.current ().getName (), "meta/key") << "name of element in keyset wrong"; EXPECT_EQ (ks.current ().getString (), "") << "string of element in keyset wrong"; kdb.close (parentKey); KeySet ks2; kdb.open (parentKey); kdb.get (ks2, parentKey); ASSERT_EQ (ks2.size (), 0) << "got keys from freshly mounted backends"; }
TEST_F (Simple, GetAppendNamespaces) { using namespace kdb; for (size_t i = 0; i < namespaces.size (); ++i) { KDB kdb; KeySet ks; ks.append (Key (namespaces[i].name + testRoot + "key", KEY_END)); kdb.get (ks, testRoot); ASSERT_EQ (ks.size (), 1) << "did not got key appended first with namespace " << namespaces[i].name; ks.rewind (); ks.next (); EXPECT_EQ (ks.current ().getName (), namespaces[i].name + "/tests/kdb/key") << "name of element in keyset wrong"; EXPECT_EQ (ks.current ().getString (), "") << "string of element in keyset wrong"; } }
TEST_F (Simple, GetAppendCascading) { using namespace kdb; KDB kdb; KeySet ks; ks.append (Key (testRoot + "key", KEY_END)); Key parentKey (testRoot, KEY_END); std::string myRoot = testRoot.substr (0, testRoot.length () - 1); EXPECT_EQ (parentKey.getName (), myRoot); EXPECT_EQ (parentKey.getString (), ""); kdb.get (ks, parentKey); EXPECT_EQ (parentKey.getName (), myRoot); std::string fn = parentKey.getString (); EXPECT_EQ (fn.substr (fn.find_last_of ('/') + 1), "kdbFile.dump"); parentKey.setString (""); ASSERT_EQ (ks.size (), 1) << "no key stayed" << ks; ks.rewind (); ks.next (); EXPECT_EQ (ks.current ().getName (), "/tests/kdb/key") << "name of element in keyset wrong"; EXPECT_EQ (ks.current ().getString (), "") << "string of element in keyset wrong"; kdb.set (ks, parentKey); EXPECT_EQ (parentKey.getName (), myRoot); EXPECT_EQ (parentKey.getString (), ""); ks.rewind (); ks.next (); EXPECT_EQ (ks.current ().getName (), "/tests/kdb/key") << "name of element in keyset wrong"; EXPECT_EQ (ks.current ().getString (), "") << "string of element in keyset wrong"; kdb.close (parentKey); EXPECT_EQ (parentKey.getName (), myRoot); EXPECT_EQ (parentKey.getString (), ""); KeySet ks2; kdb.open (parentKey); EXPECT_EQ (parentKey.getName (), myRoot); EXPECT_EQ (parentKey.getString (), ""); kdb.get (ks2, parentKey); EXPECT_EQ (parentKey.getName (), myRoot); fn = parentKey.getString (); EXPECT_EQ (fn.substr (fn.find_last_of ('/') + 1), "kdbFile.dump"); ASSERT_EQ (ks2.size (), 0) << "got keys from freshly mounted backends"; }
TEST_F (Simple, GetSystem) { using namespace kdb; KDB kdb; KeySet ks; Key parentKey ("system" + testRoot, KEY_END); ks.append (Key (parentKey.getName () + "/key", KEY_END)); EXPECT_NE (kdb.get (ks, parentKey), -1); ASSERT_EQ (ks.size (), 1) << "no key stayed" << ks; ks.rewind (); ks.next (); EXPECT_EQ (ks.current ().getName (), "system/tests/kdb/key") << "name of element in keyset wrong"; EXPECT_EQ (ks.current ().getString (), "") << "string of element in keyset wrong"; ASSERT_NE (kdb.set (ks, parentKey), -1); ks.rewind (); ks.next (); EXPECT_EQ (ks.current ().getName (), "system/tests/kdb/key") << "name of element in keyset wrong"; EXPECT_EQ (ks.current ().getString (), "") << "string of element in keyset wrong"; kdb.close (parentKey); KeySet ks2; kdb.open (parentKey); kdb.get (ks2, parentKey); ks.rewind (); ks.next (); EXPECT_EQ (ks.current ().getName (), "system/tests/kdb/key") << "name of element in keyset wrong"; EXPECT_EQ (ks.current ().getString (), "") << "string of element in keyset wrong"; }
TEST_F (Simple, TriggerError) { using namespace kdb; KDB kdb; KeySet ks; EXPECT_EQ (kdb.get (ks, testRoot), 0) << "nothing to do in get"; ks.append (Key ("system" + testRoot + "a", KEY_END)); ks.append (Key ("system" + testRoot + "k", KEY_META, "trigger/error", "10", KEY_END)); ks.append (Key ("system" + testRoot + "z", KEY_END)); struct stat buf; ASSERT_EQ (stat (mp->systemConfigFile.c_str (), &buf), -1) << "found wrong file"; EXPECT_THROW (kdb.set (ks, testRoot), kdb::KDBException) << "could not trigger error"; ASSERT_EQ (ks.size (), 3) << "key suddenly missing"; EXPECT_EQ (ks.current ().getName (), "system" + testRoot + "k") << "ks should point to error key"; ASSERT_EQ (stat (mp->systemConfigFile.c_str (), &buf), -1) << "created file even though error triggered"; }
TEST(MergeResult, ResolveConflictDeletesConflictMeta) { using namespace kdb; using namespace kdb::tools; Backend b("my_backend", "/"); b.addPlugin("resolver"); b.addPlugin("dump"); b.validated(); Key rootKey(Backends::mountpointsPath, KEY_END); KeySet mountConfig; b.serialise(rootKey, mountConfig); // outputGTest(mountConfig, "mountConfig"); mountConfig.rewind(); mountConfig.next(); EXPECT_TRUE(mountConfig.current().getName() == "system/elektra/mountpoints/my_backend") << "name of element in keyset wrong"; EXPECT_TRUE(mountConfig.current().getString() == "serialised Backend") << "string of element in keyset wrong"; mountConfig.next(); EXPECT_TRUE(mountConfig.current().getName() == "system/elektra/mountpoints/my_backend/errorplugins") << "name of element in keyset wrong"; EXPECT_TRUE(mountConfig.current().getString() == "") << "string of element in keyset wrong"; mountConfig.next(); EXPECT_TRUE(mountConfig.current().getName() == "system/elektra/mountpoints/my_backend/errorplugins/#5#resolver#resolver#") << "name of element in keyset wrong"; EXPECT_TRUE(mountConfig.current().getString() == "") << "string of element in keyset wrong"; mountConfig.next(); EXPECT_TRUE(mountConfig.current().getName() == "system/elektra/mountpoints/my_backend/getplugins") << "name of element in keyset wrong"; EXPECT_TRUE(mountConfig.current().getString() == "") << "string of element in keyset wrong"; mountConfig.next(); EXPECT_TRUE(mountConfig.current().getName() == "system/elektra/mountpoints/my_backend/getplugins/#0#resolver") << "name of element in keyset wrong"; EXPECT_TRUE(mountConfig.current().getString() == "") << "string of element in keyset wrong"; mountConfig.next(); EXPECT_TRUE(mountConfig.current().getName() == "system/elektra/mountpoints/my_backend/getplugins/#5#dump#dump#") << "name of element in keyset wrong"; EXPECT_TRUE(mountConfig.current().getString() == "") << "string of element in keyset wrong"; mountConfig.next(); EXPECT_TRUE(mountConfig.current().getName() == "system/elektra/mountpoints/my_backend/mountpoint") << "name of element in keyset wrong"; EXPECT_TRUE(mountConfig.current().getString() == "/") << "string of element in keyset wrong"; mountConfig.next(); EXPECT_TRUE(mountConfig.current().getName() == "system/elektra/mountpoints/my_backend/setplugins") << "name of element in keyset wrong"; EXPECT_TRUE(mountConfig.current().getString() == "") << "string of element in keyset wrong"; mountConfig.next(); EXPECT_TRUE(mountConfig.current().getName() == "system/elektra/mountpoints/my_backend/setplugins/#0#resolver") << "name of element in keyset wrong"; EXPECT_TRUE(mountConfig.current().getString() == "") << "string of element in keyset wrong"; mountConfig.next(); EXPECT_TRUE(mountConfig.current().getName() == "system/elektra/mountpoints/my_backend/setplugins/#5#dump") << "name of element in keyset wrong"; EXPECT_TRUE(mountConfig.current().getString() == "") << "string of element in keyset wrong"; mountConfig.next(); EXPECT_TRUE(mountConfig.current().getName() == "system/elektra/mountpoints/my_backend/setplugins/#7#resolver") << "name of element in keyset wrong"; EXPECT_TRUE(mountConfig.current().getString() == "") << "string of element in keyset wrong"; }
TEST(Backend, SimpleBackend) { using namespace kdb; using namespace kdb::tools; Backend b; b.setMountpoint(Key("/", KEY_CASCADING_NAME, KEY_END), KeySet(0, KS_END)); EXPECT_EQ(b.getMountpoint(), "/"); b.addPlugin("resolver"); b.addPlugin("dump"); b.useConfigFile("abc"); EXPECT_TRUE(b.validated()); KeySet mountConfig; b.serialize(mountConfig); // outputGTest(mountConfig, "mountConfig"); mountConfig.rewind(); mountConfig.next(); EXPECT_EQ(mountConfig.current().getName(), "system/elektra/mountpoints/\\/") << "name of element in keyset wrong"; EXPECT_EQ(mountConfig.current().getString(), "This is a configuration for a backend, see subkeys for more information") << "string of element in keyset wrong"; mountConfig.next(); EXPECT_EQ(mountConfig.current().getName(), "system/elektra/mountpoints/\\//config") << "name of element in keyset wrong"; EXPECT_EQ(mountConfig.current().getString(), "") << "string of element in keyset wrong"; mountConfig.next(); EXPECT_EQ(mountConfig.current().getName(), "system/elektra/mountpoints/\\//config/path") << "name of element in keyset wrong"; EXPECT_EQ(mountConfig.current().getString(), "abc") << "string of element in keyset wrong"; mountConfig.next(); EXPECT_EQ(mountConfig.current().getName(), "system/elektra/mountpoints/\\//errorplugins") << "name of element in keyset wrong"; EXPECT_EQ(mountConfig.current().getString(), "") << "string of element in keyset wrong"; mountConfig.next(); EXPECT_EQ(mountConfig.current().getName(), "system/elektra/mountpoints/\\//errorplugins/#5#resolver#resolver#") << "name of element in keyset wrong"; EXPECT_EQ(mountConfig.current().getString(), "") << "string of element in keyset wrong"; mountConfig.next(); EXPECT_EQ(mountConfig.current().getName(), "system/elektra/mountpoints/\\//getplugins") << "name of element in keyset wrong"; EXPECT_EQ(mountConfig.current().getString(), "") << "string of element in keyset wrong"; mountConfig.next(); EXPECT_EQ(mountConfig.current().getName(), "system/elektra/mountpoints/\\//getplugins/#0#resolver") << "name of element in keyset wrong"; EXPECT_EQ(mountConfig.current().getString(), "") << "string of element in keyset wrong"; mountConfig.next(); EXPECT_EQ(mountConfig.current().getName(), "system/elektra/mountpoints/\\//getplugins/#5#dump#dump#") << "name of element in keyset wrong"; EXPECT_EQ(mountConfig.current().getString(), "") << "string of element in keyset wrong"; mountConfig.next(); EXPECT_EQ(mountConfig.current().getName(), "system/elektra/mountpoints/\\//mountpoint") << "name of element in keyset wrong"; EXPECT_EQ(mountConfig.current().getString(), "/") << "string of element in keyset wrong"; mountConfig.next(); EXPECT_EQ(mountConfig.current().getName(), "system/elektra/mountpoints/\\//setplugins") << "name of element in keyset wrong"; EXPECT_EQ(mountConfig.current().getString(), "") << "string of element in keyset wrong"; mountConfig.next(); EXPECT_EQ(mountConfig.current().getName(), "system/elektra/mountpoints/\\//setplugins/#0#resolver") << "name of element in keyset wrong"; EXPECT_EQ(mountConfig.current().getString(), "") << "string of element in keyset wrong"; mountConfig.next(); EXPECT_EQ(mountConfig.current().getName(), "system/elektra/mountpoints/\\//setplugins/#5#dump") << "name of element in keyset wrong"; EXPECT_EQ(mountConfig.current().getString(), "") << "string of element in keyset wrong"; mountConfig.next(); EXPECT_EQ(mountConfig.current().getName(), "system/elektra/mountpoints/\\//setplugins/#7#resolver") << "name of element in keyset wrong"; EXPECT_EQ(mountConfig.current().getString(), "") << "string of element in keyset wrong"; }
TEST(Backend, SimpleBackendWithConf) { using namespace kdb; using namespace kdb::tools; Backend b; b.setMountpoint(Key("user/somewhere", KEY_END), KeySet(0, KS_END)); EXPECT_EQ(b.getMountpoint(), "user/somewhere"); KeySet backendConf(5, *Key("system/globalConf", KEY_VALUE, "for everywhere", KEY_END), *Key("system/other_global_conf", KEY_VALUE, "more", KEY_END), KS_END); b.setBackendConfig(backendConf); KeySet resConf(5, *Key("user/res_conf", KEY_VALUE, "do resolving", KEY_END), *Key("user/other_res_conf", KEY_VALUE, "do resolving too", KEY_END), KS_END); b.addPlugin("resolver", resConf); KeySet dumpConf(5, *Key("user/file_format", KEY_VALUE, "1", KEY_END), *Key("user/other_dump_conf", KEY_VALUE, "some dump config", KEY_END), KS_END); b.addPlugin("dump", dumpConf); b.useConfigFile("abc"); EXPECT_TRUE(b.validated()); KeySet mountConfig; b.serialize(mountConfig); // outputGTest(mountConfig, "mountConfig"); mountConfig.rewind(); mountConfig.next(); EXPECT_EQ(mountConfig.current().getName(), "system/elektra/mountpoints/user\\/somewhere") << "name of element in keyset wrong"; EXPECT_EQ(mountConfig.current().getString(), "This is a configuration for a backend, see subkeys for more information") << "string of element in keyset wrong"; mountConfig.next(); EXPECT_EQ(mountConfig.current().getName(), "system/elektra/mountpoints/user\\/somewhere/config") << "name of element in keyset wrong"; EXPECT_EQ(mountConfig.current().getString(), "") << "string of element in keyset wrong"; mountConfig.next(); EXPECT_EQ(mountConfig.current().getName(), "system/elektra/mountpoints/user\\/somewhere/config/globalConf") << "name of element in keyset wrong"; EXPECT_EQ(mountConfig.current().getString(), "for everywhere") << "string of element in keyset wrong"; mountConfig.next(); EXPECT_EQ(mountConfig.current().getName(), "system/elektra/mountpoints/user\\/somewhere/config/other_global_conf") << "name of element in keyset wrong"; EXPECT_EQ(mountConfig.current().getString(), "more") << "string of element in keyset wrong"; mountConfig.next(); EXPECT_EQ(mountConfig.current().getName(), "system/elektra/mountpoints/user\\/somewhere/config/path") << "name of element in keyset wrong"; EXPECT_EQ(mountConfig.current().getString(), "abc") << "string of element in keyset wrong"; mountConfig.next(); EXPECT_EQ(mountConfig.current().getName(), "system/elektra/mountpoints/user\\/somewhere/errorplugins") << "name of element in keyset wrong"; EXPECT_EQ(mountConfig.current().getString(), "") << "string of element in keyset wrong"; mountConfig.next(); EXPECT_EQ(mountConfig.current().getName(), "system/elektra/mountpoints/user\\/somewhere/errorplugins/#5#resolver#resolver#") << "name of element in keyset wrong"; EXPECT_EQ(mountConfig.current().getString(), "") << "string of element in keyset wrong"; mountConfig.next(); EXPECT_EQ(mountConfig.current().getName(), "system/elektra/mountpoints/user\\/somewhere/errorplugins/#5#resolver#resolver#/config") << "name of element in keyset wrong"; EXPECT_EQ(mountConfig.current().getString(), "") << "string of element in keyset wrong"; mountConfig.next(); EXPECT_EQ(mountConfig.current().getName(), "system/elektra/mountpoints/user\\/somewhere/errorplugins/#5#resolver#resolver#/config/other_res_conf") << "name of element in keyset wrong"; EXPECT_EQ(mountConfig.current().getString(), "do resolving too") << "string of element in keyset wrong"; mountConfig.next(); EXPECT_EQ(mountConfig.current().getName(), "system/elektra/mountpoints/user\\/somewhere/errorplugins/#5#resolver#resolver#/config/res_conf") << "name of element in keyset wrong"; EXPECT_EQ(mountConfig.current().getString(), "do resolving") << "string of element in keyset wrong"; mountConfig.next(); EXPECT_EQ(mountConfig.current().getName(), "system/elektra/mountpoints/user\\/somewhere/getplugins") << "name of element in keyset wrong"; EXPECT_EQ(mountConfig.current().getString(), "") << "string of element in keyset wrong"; mountConfig.next(); EXPECT_EQ(mountConfig.current().getName(), "system/elektra/mountpoints/user\\/somewhere/getplugins/#0#resolver") << "name of element in keyset wrong"; EXPECT_EQ(mountConfig.current().getString(), "") << "string of element in keyset wrong"; mountConfig.next(); EXPECT_EQ(mountConfig.current().getName(), "system/elektra/mountpoints/user\\/somewhere/getplugins/#5#dump#dump#") << "name of element in keyset wrong"; EXPECT_EQ(mountConfig.current().getString(), "") << "string of element in keyset wrong"; mountConfig.next(); EXPECT_EQ(mountConfig.current().getName(), "system/elektra/mountpoints/user\\/somewhere/getplugins/#5#dump#dump#/config") << "name of element in keyset wrong"; EXPECT_EQ(mountConfig.current().getString(), "") << "string of element in keyset wrong"; mountConfig.next(); EXPECT_EQ(mountConfig.current().getName(), "system/elektra/mountpoints/user\\/somewhere/getplugins/#5#dump#dump#/config/file_format") << "name of element in keyset wrong"; EXPECT_EQ(mountConfig.current().getString(), "1") << "string of element in keyset wrong"; mountConfig.next(); EXPECT_EQ(mountConfig.current().getName(), "system/elektra/mountpoints/user\\/somewhere/getplugins/#5#dump#dump#/config/other_dump_conf") << "name of element in keyset wrong"; EXPECT_EQ(mountConfig.current().getString(), "some dump config") << "string of element in keyset wrong"; mountConfig.next(); EXPECT_EQ(mountConfig.current().getName(), "system/elektra/mountpoints/user\\/somewhere/mountpoint") << "name of element in keyset wrong"; EXPECT_EQ(mountConfig.current().getString(), "user/somewhere") << "string of element in keyset wrong"; mountConfig.next(); EXPECT_EQ(mountConfig.current().getName(), "system/elektra/mountpoints/user\\/somewhere/setplugins") << "name of element in keyset wrong"; EXPECT_EQ(mountConfig.current().getString(), "") << "string of element in keyset wrong"; mountConfig.next(); EXPECT_EQ(mountConfig.current().getName(), "system/elektra/mountpoints/user\\/somewhere/setplugins/#0#resolver") << "name of element in keyset wrong"; EXPECT_EQ(mountConfig.current().getString(), "") << "string of element in keyset wrong"; mountConfig.next(); EXPECT_EQ(mountConfig.current().getName(), "system/elektra/mountpoints/user\\/somewhere/setplugins/#5#dump") << "name of element in keyset wrong"; EXPECT_EQ(mountConfig.current().getString(), "") << "string of element in keyset wrong"; mountConfig.next(); EXPECT_EQ(mountConfig.current().getName(), "system/elektra/mountpoints/user\\/somewhere/setplugins/#7#resolver") << "name of element in keyset wrong"; EXPECT_EQ(mountConfig.current().getString(), "") << "string of element in keyset wrong"; }