LCOV - code coverage report
Current view: top level - src/libs/tools/tests - testtool_backend.cpp (source / functions) Hit Total Coverage
Test: coverage-filtered.info Lines: 371 482 77.0 %
Date: 2019-09-12 12:28:41 Functions: 14 22 63.6 %

          Line data    Source code
       1             : /**
       2             :  * @file
       3             :  *
       4             :  * @brief Tests for the Backend class
       5             :  *
       6             :  * @copyright BSD License (see LICENSE.md or https://www.libelektra.org)
       7             :  *
       8             :  */
       9             : 
      10             : 
      11             : #include <backend.hpp>
      12             : #include <backends.hpp>
      13             : 
      14             : #include <gtest/gtest.h>
      15             : #include <iostream>
      16             : #include <kdb.hpp>
      17             : #include <kdbconfig.h>
      18             : #include <string>
      19             : 
      20           0 : std::string makeLiteralString (std::string str)
      21             : {
      22           0 :         std::string ret;
      23           0 :         for (auto & elem : str)
      24             :         {
      25           0 :                 if (elem == '\\')
      26             :                 {
      27             :                         ret += "\\\\";
      28             :                 }
      29             :                 else
      30             :                 {
      31           0 :                         ret += elem;
      32             :                 }
      33             :         }
      34           0 :         return ret;
      35             : }
      36             : 
      37             : /**
      38             :  * @brief Easily allows one to generate regression tests for keysets.
      39             :  *
      40             :  * @param tocheck the keyset to check (name + string)
      41             :  * @param name the name of the keyset
      42             :  */
      43           0 : void outputGTest (kdb::KeySet tocheck, std::string name)
      44             : {
      45           0 :         std::cout << name << ".rewind();" << std::endl;
      46             :         tocheck.rewind ();
      47           0 :         while (tocheck.next ())
      48             :         {
      49           0 :                 std::cout << name << ".next ();" << std::endl;
      50           0 :                 std::cout << "EXPECT_EQ (" << name << ".current ().getName (), \"" << makeLiteralString (tocheck.current ().getName ())
      51           0 :                           << "\") << \"name of element in keyset wrong\";" << std::endl;
      52           0 :                 std::cout << "EXPECT_EQ (" << name << ".current ().getString (), \"" << makeLiteralString (tocheck.current ().getString ())
      53           0 :                           << "\") << \"string of element in keyset wrong\";" << std::endl;
      54             :         }
      55           0 : }
      56             : 
      57          20 : TEST (Backend, backendName)
      58             : {
      59             :         using namespace kdb;
      60             :         using namespace kdb::tools;
      61           4 :         Backend b;
      62           6 :         b.setMountpoint (Key ("user/a", KEY_CASCADING_NAME, KEY_END), KeySet (0, KS_END));
      63           8 :         EXPECT_EQ (b.getMountpoint (), "user/a");
      64           2 : }
      65             : 
      66          20 : TEST (Backend, SimpleBackend)
      67             : {
      68             :         using namespace kdb;
      69             :         using namespace kdb::tools;
      70           4 :         Backend b;
      71           6 :         b.setMountpoint (Key ("/", KEY_CASCADING_NAME, KEY_END), KeySet (0, KS_END));
      72           8 :         EXPECT_EQ (b.getMountpoint (), "/");
      73          10 :         b.addPlugin (PluginSpec ("resolver"));
      74          10 :         b.addPlugin (PluginSpec ("dump"));
      75           8 :         b.useConfigFile ("abc");
      76           6 :         EXPECT_TRUE (b.validated ());
      77             : 
      78           4 :         KeySet mountConfig;
      79           2 :         b.serialize (mountConfig);
      80             : 
      81             :         // outputGTest (mountConfig, "mountConfig");
      82             : 
      83           2 :         mountConfig.rewind ();
      84           4 :         mountConfig.next ();
      85          10 :         EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/\\/") << "name of element in keyset wrong";
      86          10 :         EXPECT_EQ (mountConfig.current ().getString (), "This is a configuration for a backend, see subkeys for more information")
      87           0 :                 << "string of element in keyset wrong";
      88           4 :         mountConfig.next ();
      89          10 :         EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/\\//config") << "name of element in keyset wrong";
      90          10 :         EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
      91           4 :         mountConfig.next ();
      92          10 :         EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/\\//config/fcrypt/textmode")
      93           0 :                 << "name of element in keyset wrong";
      94          10 :         EXPECT_EQ (mountConfig.current ().getString (), "0") << "string of element in keyset wrong";
      95           4 :         mountConfig.next ();
      96          10 :         EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/\\//config/path") << "name of element in keyset wrong";
      97          10 :         EXPECT_EQ (mountConfig.current ().getString (), "abc") << "string of element in keyset wrong";
      98           4 :         mountConfig.next ();
      99          10 :         EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/\\//errorplugins") << "name of element in keyset wrong";
     100          10 :         EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
     101           4 :         mountConfig.next ();
     102          10 :         EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/\\//errorplugins/#5#" KDB_DEFAULT_RESOLVER "#resolver#")
     103           0 :                 << "name of element in keyset wrong";
     104          10 :         EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
     105           4 :         mountConfig.next ();
     106          10 :         EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/\\//getplugins") << "name of element in keyset wrong";
     107          10 :         EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
     108           4 :         mountConfig.next ();
     109          10 :         EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/\\//getplugins/#0#resolver")
     110           0 :                 << "name of element in keyset wrong";
     111          10 :         EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
     112           4 :         mountConfig.next ();
     113          10 :         EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/\\//getplugins/#5#dump#dump#")
     114           0 :                 << "name of element in keyset wrong";
     115          10 :         EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
     116           4 :         mountConfig.next ();
     117          10 :         EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/\\//mountpoint") << "name of element in keyset wrong";
     118          10 :         EXPECT_EQ (mountConfig.current ().getString (), "/") << "string of element in keyset wrong";
     119           4 :         mountConfig.next ();
     120          10 :         EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/\\//setplugins") << "name of element in keyset wrong";
     121          10 :         EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
     122           4 :         mountConfig.next ();
     123          10 :         EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/\\//setplugins/#0#resolver")
     124           0 :                 << "name of element in keyset wrong";
     125          10 :         EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
     126           4 :         mountConfig.next ();
     127          10 :         EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/\\//setplugins/#5#dump")
     128           0 :                 << "name of element in keyset wrong";
     129          10 :         EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
     130           4 :         mountConfig.next ();
     131          10 :         EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/\\//setplugins/#7#resolver")
     132           0 :                 << "name of element in keyset wrong";
     133          10 :         EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
     134           2 : }
     135             : 
     136          20 : TEST (Backend, CrazyName)
     137             : {
     138             :         using namespace kdb;
     139             :         using namespace kdb::tools;
     140           4 :         Backend b;
     141           6 :         b.setMountpoint (Key ("/crazy///.//name/../a..__.b/._.///._c__d", KEY_CASCADING_NAME, KEY_END), KeySet (0, KS_END));
     142          10 :         b.addPlugin (PluginSpec ("resolver"));
     143          10 :         b.addPlugin (PluginSpec ("dump"));
     144           6 :         EXPECT_TRUE (b.validated ());
     145             : 
     146           4 :         KeySet mountConfig;
     147           2 :         b.serialize (mountConfig);
     148             : 
     149             :         // outputGTest (mountConfig, "mountConfig");
     150             : 
     151           2 :         mountConfig.rewind ();
     152           4 :         mountConfig.next ();
     153          10 :         EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/\\/crazy\\/a..__.b\\/._.\\/._c__d")
     154           0 :                 << "name of element in keyset wrong";
     155          10 :         EXPECT_EQ (mountConfig.current ().getString (), "This is a configuration for a backend, see subkeys for more information")
     156           0 :                 << "string of element in keyset wrong";
     157           4 :         mountConfig.next ();
     158          10 :         EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/\\/crazy\\/a..__.b\\/._.\\/._c__d/config")
     159           0 :                 << "name of element in keyset wrong";
     160          10 :         EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
     161           4 :         mountConfig.next ();
     162          10 :         EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/\\/crazy\\/a..__.b\\/._.\\/._c__d/config/fcrypt/textmode")
     163           0 :                 << "name of element in keyset wrong";
     164          10 :         EXPECT_EQ (mountConfig.current ().getString (), "0") << "string of element in keyset wrong";
     165           4 :         mountConfig.next ();
     166          10 :         EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/\\/crazy\\/a..__.b\\/._.\\/._c__d/config/path")
     167           0 :                 << "name of element in keyset wrong";
     168          10 :         EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
     169           4 :         mountConfig.next ();
     170          10 :         EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/\\/crazy\\/a..__.b\\/._.\\/._c__d/errorplugins")
     171           0 :                 << "name of element in keyset wrong";
     172          10 :         EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
     173           4 :         mountConfig.next ();
     174          10 :         EXPECT_EQ (mountConfig.current ().getName (),
     175             :                    "system/elektra/mountpoints/\\/crazy\\/a..__.b\\/._.\\/._c__d/errorplugins/#5#" KDB_DEFAULT_RESOLVER "#resolver#")
     176           0 :                 << "name of element in keyset wrong";
     177          10 :         EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
     178           4 :         mountConfig.next ();
     179          10 :         EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/\\/crazy\\/a..__.b\\/._.\\/._c__d/getplugins")
     180           0 :                 << "name of element in keyset wrong";
     181          10 :         EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
     182           4 :         mountConfig.next ();
     183          10 :         EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/\\/crazy\\/a..__.b\\/._.\\/._c__d/getplugins/#0#resolver")
     184           0 :                 << "name of element in keyset wrong";
     185          10 :         EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
     186           4 :         mountConfig.next ();
     187          10 :         EXPECT_EQ (mountConfig.current ().getName (),
     188             :                    "system/elektra/mountpoints/\\/crazy\\/a..__.b\\/._.\\/._c__d/getplugins/#5#dump#dump#")
     189           0 :                 << "name of element in keyset wrong";
     190          10 :         EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
     191           4 :         mountConfig.next ();
     192          10 :         EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/\\/crazy\\/a..__.b\\/._.\\/._c__d/mountpoint")
     193           0 :                 << "name of element in keyset wrong";
     194          10 :         EXPECT_EQ (mountConfig.current ().getString (), "/crazy/a..__.b/._./._c__d") << "string of element in keyset wrong";
     195           4 :         mountConfig.next ();
     196          10 :         EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/\\/crazy\\/a..__.b\\/._.\\/._c__d/setplugins")
     197           0 :                 << "name of element in keyset wrong";
     198          10 :         EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
     199           4 :         mountConfig.next ();
     200          10 :         EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/\\/crazy\\/a..__.b\\/._.\\/._c__d/setplugins/#0#resolver")
     201           0 :                 << "name of element in keyset wrong";
     202          10 :         EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
     203           4 :         mountConfig.next ();
     204          10 :         EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/\\/crazy\\/a..__.b\\/._.\\/._c__d/setplugins/#5#dump")
     205           0 :                 << "name of element in keyset wrong";
     206          10 :         EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
     207           4 :         mountConfig.next ();
     208          10 :         EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/\\/crazy\\/a..__.b\\/._.\\/._c__d/setplugins/#7#resolver")
     209           0 :                 << "name of element in keyset wrong";
     210          10 :         EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
     211           2 : }
     212             : 
     213          20 : TEST (Backend, SimpleBackendWithConf)
     214             : {
     215             :         using namespace kdb;
     216             :         using namespace kdb::tools;
     217           4 :         Backend b;
     218           6 :         b.setMountpoint (Key ("user/somewhere", KEY_END), KeySet (0, KS_END));
     219           8 :         EXPECT_EQ (b.getMountpoint (), "user/somewhere");
     220           4 :         KeySet backendConf (5, *Key ("system/globalConf", KEY_VALUE, "for everywhere", KEY_END),
     221          10 :                             *Key ("system/other_global_conf", KEY_VALUE, "more", KEY_END), KS_END);
     222           2 :         b.setBackendConfig (backendConf);
     223           4 :         KeySet resConf (5, *Key ("user/res_conf", KEY_VALUE, "do resolving", KEY_END),
     224          10 :                         *Key ("user/other_res_conf", KEY_VALUE, "do resolving too", KEY_END), KS_END);
     225          10 :         b.addPlugin (PluginSpec ("resolver", resConf));
     226           4 :         KeySet dumpConf (5, *Key ("user/file_format", KEY_VALUE, "1", KEY_END),
     227          10 :                          *Key ("user/other_dump_conf", KEY_VALUE, "some dump config", KEY_END), KS_END);
     228          10 :         b.addPlugin (PluginSpec ("dump", dumpConf));
     229           8 :         b.useConfigFile ("abc");
     230           6 :         EXPECT_TRUE (b.validated ());
     231             : 
     232           4 :         KeySet mountConfig;
     233           2 :         b.serialize (mountConfig);
     234             : 
     235             :         // outputGTest (mountConfig, "mountConfig");
     236             : 
     237           2 :         mountConfig.rewind ();
     238           4 :         mountConfig.next ();
     239          10 :         EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/user\\/somewhere") << "name of element in keyset wrong";
     240          10 :         EXPECT_EQ (mountConfig.current ().getString (), "This is a configuration for a backend, see subkeys for more information")
     241           0 :                 << "string of element in keyset wrong";
     242           4 :         mountConfig.next ();
     243          10 :         EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/user\\/somewhere/config")
     244           0 :                 << "name of element in keyset wrong";
     245          10 :         EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
     246           4 :         mountConfig.next ();
     247          10 :         EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/user\\/somewhere/config/fcrypt/textmode")
     248           0 :                 << "name of element in keyset wrong";
     249          10 :         EXPECT_EQ (mountConfig.current ().getString (), "0") << "string of element in keyset wrong";
     250           4 :         mountConfig.next ();
     251          10 :         EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/user\\/somewhere/config/globalConf")
     252           0 :                 << "name of element in keyset wrong";
     253          10 :         EXPECT_EQ (mountConfig.current ().getString (), "for everywhere") << "string of element in keyset wrong";
     254           4 :         mountConfig.next ();
     255          10 :         EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/user\\/somewhere/config/other_global_conf")
     256           0 :                 << "name of element in keyset wrong";
     257          10 :         EXPECT_EQ (mountConfig.current ().getString (), "more") << "string of element in keyset wrong";
     258           4 :         mountConfig.next ();
     259          10 :         EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/user\\/somewhere/config/path")
     260           0 :                 << "name of element in keyset wrong";
     261          10 :         EXPECT_EQ (mountConfig.current ().getString (), "abc") << "string of element in keyset wrong";
     262           4 :         mountConfig.next ();
     263          10 :         EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/user\\/somewhere/errorplugins")
     264           0 :                 << "name of element in keyset wrong";
     265          10 :         EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
     266           4 :         mountConfig.next ();
     267          10 :         EXPECT_EQ (mountConfig.current ().getName (),
     268             :                    "system/elektra/mountpoints/user\\/somewhere/errorplugins/#5#" KDB_DEFAULT_RESOLVER "#resolver#")
     269           0 :                 << "name of element in keyset wrong";
     270          10 :         EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
     271           4 :         mountConfig.next ();
     272          10 :         EXPECT_EQ (mountConfig.current ().getName (),
     273             :                    "system/elektra/mountpoints/user\\/somewhere/errorplugins/#5#" KDB_DEFAULT_RESOLVER "#resolver#/config")
     274           0 :                 << "name of element in keyset wrong";
     275          10 :         EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
     276           4 :         mountConfig.next ();
     277          10 :         EXPECT_EQ (mountConfig.current ().getName (),
     278             :                    "system/elektra/mountpoints/user\\/somewhere/errorplugins/#5#" KDB_DEFAULT_RESOLVER "#resolver#/config/other_res_conf")
     279           0 :                 << "name of element in keyset wrong";
     280          10 :         EXPECT_EQ (mountConfig.current ().getString (), "do resolving too") << "string of element in keyset wrong";
     281           4 :         mountConfig.next ();
     282          10 :         EXPECT_EQ (mountConfig.current ().getName (),
     283             :                    "system/elektra/mountpoints/user\\/somewhere/errorplugins/#5#" KDB_DEFAULT_RESOLVER "#resolver#/config/res_conf")
     284           0 :                 << "name of element in keyset wrong";
     285          10 :         EXPECT_EQ (mountConfig.current ().getString (), "do resolving") << "string of element in keyset wrong";
     286           4 :         mountConfig.next ();
     287          10 :         EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/user\\/somewhere/getplugins")
     288           0 :                 << "name of element in keyset wrong";
     289          10 :         EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
     290           4 :         mountConfig.next ();
     291          10 :         EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/user\\/somewhere/getplugins/#0#resolver")
     292           0 :                 << "name of element in keyset wrong";
     293          10 :         EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
     294           4 :         mountConfig.next ();
     295          10 :         EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/user\\/somewhere/getplugins/#5#dump#dump#")
     296           0 :                 << "name of element in keyset wrong";
     297          10 :         EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
     298           4 :         mountConfig.next ();
     299          10 :         EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/user\\/somewhere/getplugins/#5#dump#dump#/config")
     300           0 :                 << "name of element in keyset wrong";
     301          10 :         EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
     302           4 :         mountConfig.next ();
     303          10 :         EXPECT_EQ (mountConfig.current ().getName (),
     304             :                    "system/elektra/mountpoints/user\\/somewhere/getplugins/#5#dump#dump#/config/file_format")
     305           0 :                 << "name of element in keyset wrong";
     306          10 :         EXPECT_EQ (mountConfig.current ().getString (), "1") << "string of element in keyset wrong";
     307           4 :         mountConfig.next ();
     308          10 :         EXPECT_EQ (mountConfig.current ().getName (),
     309             :                    "system/elektra/mountpoints/user\\/somewhere/getplugins/#5#dump#dump#/config/other_dump_conf")
     310           0 :                 << "name of element in keyset wrong";
     311          10 :         EXPECT_EQ (mountConfig.current ().getString (), "some dump config") << "string of element in keyset wrong";
     312           4 :         mountConfig.next ();
     313          10 :         EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/user\\/somewhere/mountpoint")
     314           0 :                 << "name of element in keyset wrong";
     315          10 :         EXPECT_EQ (mountConfig.current ().getString (), "user/somewhere") << "string of element in keyset wrong";
     316           4 :         mountConfig.next ();
     317          10 :         EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/user\\/somewhere/setplugins")
     318           0 :                 << "name of element in keyset wrong";
     319          10 :         EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
     320           4 :         mountConfig.next ();
     321          10 :         EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/user\\/somewhere/setplugins/#0#resolver")
     322           0 :                 << "name of element in keyset wrong";
     323          10 :         EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
     324           4 :         mountConfig.next ();
     325          10 :         EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/user\\/somewhere/setplugins/#5#dump")
     326           0 :                 << "name of element in keyset wrong";
     327          10 :         EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
     328           4 :         mountConfig.next ();
     329          10 :         EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/user\\/somewhere/setplugins/#7#resolver")
     330           0 :                 << "name of element in keyset wrong";
     331          10 :         EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
     332           2 : }
     333             : 
     334             : 
     335          20 : TEST (Backend, SimpleBackendWithNeededConf)
     336             : {
     337             :         using namespace kdb;
     338             :         using namespace kdb::tools;
     339           4 :         Backend b;
     340           6 :         b.setMountpoint (Key ("user/somewhere", KEY_END), KeySet (0, KS_END));
     341           8 :         EXPECT_EQ (b.getMountpoint (), "user/somewhere");
     342           4 :         KeySet backendConf (5, *Key ("system/globalConf", KEY_VALUE, "for everywhere", KEY_END),
     343          10 :                             *Key ("system/struct/FStab/device", KEY_VALUE, "loses, not in key", KEY_END), KS_END);
     344           2 :         b.setBackendConfig (backendConf);
     345           4 :         KeySet resConf (5, *Key ("user/res_conf", KEY_VALUE, "do resolving", KEY_END),
     346          10 :                         *Key ("user/other_res_conf", KEY_VALUE, "do resolving too", KEY_END), KS_END);
     347          10 :         b.addPlugin (PluginSpec ("resolver", resConf));
     348           4 :         KeySet dumpConf (5, *Key ("user/file_format", KEY_VALUE, "1", KEY_END),
     349          10 :                          *Key ("user/other_dump_conf", KEY_VALUE, "some dump config", KEY_END), KS_END);
     350             :         try
     351             :         {
     352          10 :                 b.addPlugin (PluginSpec ("fstab", dumpConf));
     353             :         }
     354           0 :         catch (...)
     355             :         {
     356           0 :                 std::cout << "No fstab plugin, abort test case" << std::endl;
     357             :                 return;
     358             :         }
     359           8 :         b.useConfigFile ("abc");
     360           6 :         EXPECT_TRUE (b.validated ());
     361             : 
     362           4 :         KeySet mountConfig;
     363           2 :         b.serialize (mountConfig);
     364             : 
     365             :         // outputGTest (mountConfig, "mountConfig");
     366             : 
     367           2 :         mountConfig.rewind ();
     368           4 :         mountConfig.next ();
     369          10 :         EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/user\\/somewhere") << "name of element in keyset wrong";
     370          10 :         EXPECT_EQ (mountConfig.current ().getString (), "This is a configuration for a backend, see subkeys for more information")
     371           0 :                 << "string of element in keyset wrong";
     372           4 :         mountConfig.next ();
     373          10 :         EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/user\\/somewhere/config")
     374           0 :                 << "name of element in keyset wrong";
     375          10 :         EXPECT_EQ (mountConfig.current ().getString (), "The configuration which is needed") << "string of element in keyset wrong";
     376           4 :         mountConfig.next ();
     377          10 :         EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/user\\/somewhere/config/globalConf")
     378           0 :                 << "name of element in keyset wrong";
     379          10 :         EXPECT_EQ (mountConfig.current ().getString (), "for everywhere") << "string of element in keyset wrong";
     380           4 :         mountConfig.next ();
     381          10 :         EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/user\\/somewhere/config/path")
     382           0 :                 << "name of element in keyset wrong";
     383          10 :         EXPECT_EQ (mountConfig.current ().getString (), "abc") << "string of element in keyset wrong";
     384           4 :         mountConfig.next ();
     385          10 :         EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/user\\/somewhere/config/struct")
     386           0 :                 << "name of element in keyset wrong";
     387          10 :         EXPECT_EQ (mountConfig.current ().getString (), "list FStab") << "string of element in keyset wrong";
     388           4 :         mountConfig.next ();
     389          10 :         EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/user\\/somewhere/config/struct/FStab")
     390           0 :                 << "name of element in keyset wrong";
     391          10 :         EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
     392           4 :         mountConfig.next ();
     393          10 :         EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/user\\/somewhere/config/struct/FStab/device")
     394           0 :                 << "name of element in keyset wrong";
     395          10 :         EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
     396           4 :         mountConfig.next ();
     397          10 :         EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/user\\/somewhere/config/struct/FStab/dumpfreq")
     398           0 :                 << "name of element in keyset wrong";
     399          10 :         EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
     400           4 :         mountConfig.next ();
     401          10 :         EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/user\\/somewhere/config/struct/FStab/mpoint")
     402           0 :                 << "name of element in keyset wrong";
     403          10 :         EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
     404           4 :         mountConfig.next ();
     405          10 :         EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/user\\/somewhere/config/struct/FStab/options")
     406           0 :                 << "name of element in keyset wrong";
     407          10 :         EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
     408           4 :         mountConfig.next ();
     409          10 :         EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/user\\/somewhere/config/struct/FStab/passno")
     410           0 :                 << "name of element in keyset wrong";
     411          10 :         EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
     412           4 :         mountConfig.next ();
     413          10 :         EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/user\\/somewhere/config/struct/FStab/type")
     414           0 :                 << "name of element in keyset wrong";
     415          10 :         EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
     416           4 :         mountConfig.next ();
     417          10 :         EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/user\\/somewhere/errorplugins")
     418           0 :                 << "name of element in keyset wrong";
     419          10 :         EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
     420           4 :         mountConfig.next ();
     421          10 :         EXPECT_EQ (mountConfig.current ().getName (),
     422             :                    "system/elektra/mountpoints/user\\/somewhere/errorplugins/#5#" KDB_DEFAULT_RESOLVER "#resolver#")
     423           0 :                 << "name of element in keyset wrong";
     424          10 :         EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
     425           4 :         mountConfig.next ();
     426          10 :         EXPECT_EQ (mountConfig.current ().getName (),
     427             :                    "system/elektra/mountpoints/user\\/somewhere/errorplugins/#5#" KDB_DEFAULT_RESOLVER "#resolver#/config")
     428           0 :                 << "name of element in keyset wrong";
     429          10 :         EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
     430           4 :         mountConfig.next ();
     431          10 :         EXPECT_EQ (mountConfig.current ().getName (),
     432             :                    "system/elektra/mountpoints/user\\/somewhere/errorplugins/#5#" KDB_DEFAULT_RESOLVER "#resolver#/config/other_res_conf")
     433           0 :                 << "name of element in keyset wrong";
     434          10 :         EXPECT_EQ (mountConfig.current ().getString (), "do resolving too") << "string of element in keyset wrong";
     435           4 :         mountConfig.next ();
     436          10 :         EXPECT_EQ (mountConfig.current ().getName (),
     437             :                    "system/elektra/mountpoints/user\\/somewhere/errorplugins/#5#" KDB_DEFAULT_RESOLVER "#resolver#/config/res_conf")
     438           0 :                 << "name of element in keyset wrong";
     439          10 :         EXPECT_EQ (mountConfig.current ().getString (), "do resolving") << "string of element in keyset wrong";
     440           4 :         mountConfig.next ();
     441          10 :         EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/user\\/somewhere/getplugins")
     442           0 :                 << "name of element in keyset wrong";
     443          10 :         EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
     444           4 :         mountConfig.next ();
     445          10 :         EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/user\\/somewhere/getplugins/#0#resolver")
     446           0 :                 << "name of element in keyset wrong";
     447          10 :         EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
     448           4 :         mountConfig.next ();
     449          10 :         EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/user\\/somewhere/getplugins/#5#fstab#fstab#")
     450           0 :                 << "name of element in keyset wrong";
     451          10 :         EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
     452           4 :         mountConfig.next ();
     453          10 :         EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/user\\/somewhere/getplugins/#5#fstab#fstab#/config")
     454           0 :                 << "name of element in keyset wrong";
     455          10 :         EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
     456           4 :         mountConfig.next ();
     457          10 :         EXPECT_EQ (mountConfig.current ().getName (),
     458             :                    "system/elektra/mountpoints/user\\/somewhere/getplugins/#5#fstab#fstab#/config/file_format")
     459           0 :                 << "name of element in keyset wrong";
     460          10 :         EXPECT_EQ (mountConfig.current ().getString (), "1") << "string of element in keyset wrong";
     461           4 :         mountConfig.next ();
     462          10 :         EXPECT_EQ (mountConfig.current ().getName (),
     463             :                    "system/elektra/mountpoints/user\\/somewhere/getplugins/#5#fstab#fstab#/config/other_dump_conf")
     464           0 :                 << "name of element in keyset wrong";
     465          10 :         EXPECT_EQ (mountConfig.current ().getString (), "some dump config") << "string of element in keyset wrong";
     466           4 :         mountConfig.next ();
     467          10 :         EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/user\\/somewhere/mountpoint")
     468           0 :                 << "name of element in keyset wrong";
     469          10 :         EXPECT_EQ (mountConfig.current ().getString (), "user/somewhere") << "string of element in keyset wrong";
     470           4 :         mountConfig.next ();
     471          10 :         EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/user\\/somewhere/setplugins")
     472           0 :                 << "name of element in keyset wrong";
     473          10 :         EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
     474           4 :         mountConfig.next ();
     475          10 :         EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/user\\/somewhere/setplugins/#0#resolver")
     476           0 :                 << "name of element in keyset wrong";
     477          10 :         EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
     478           4 :         mountConfig.next ();
     479          10 :         EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/user\\/somewhere/setplugins/#5#fstab")
     480           0 :                 << "name of element in keyset wrong";
     481          10 :         EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
     482           4 :         mountConfig.next ();
     483          10 :         EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/user\\/somewhere/setplugins/#7#resolver")
     484           0 :                 << "name of element in keyset wrong";
     485          10 :         EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
     486             : }
     487             : 
     488             : 
     489          20 : TEST (Backend, SimpleBackendWithUnderscore)
     490             : {
     491             :         using namespace kdb;
     492             :         using namespace kdb::tools;
     493           4 :         Backend b;
     494           6 :         b.setMountpoint (Key ("user/somewhere", KEY_END), KeySet (0, KS_END));
     495           8 :         EXPECT_EQ (b.getMountpoint (), "user/somewhere");
     496           8 :         KeySet backendConf (5, *Key ("system/global/conf", KEY_VALUE, "for backend", KEY_END), KS_END);
     497           2 :         b.setBackendConfig (backendConf);
     498           8 :         KeySet resConf (5, *Key ("user/res/conf", KEY_VALUE, "do it", KEY_END), KS_END);
     499           8 :         KeySet dumpConf (5, *Key ("user/something", KEY_VALUE, "a val", KEY_END), KS_END);
     500             :         try
     501             :         {
     502          10 :                 b.addPlugin (PluginSpec ("dump", resConf));
     503          10 :                 b.addPlugin (PluginSpec ("resolver_fm_b_b", dumpConf));
     504             :         }
     505           0 :         catch (...)
     506             :         {
     507           0 :                 std::cout << "No resolver_fm_b_b plugin (or dump), abort test case" << std::endl;
     508             :                 return;
     509             :         }
     510           8 :         b.useConfigFile ("abc");
     511           6 :         EXPECT_TRUE (b.validated ());
     512             : 
     513           4 :         KeySet mountConfig;
     514           2 :         b.serialize (mountConfig);
     515             : 
     516             :         // outputGTest (mountConfig, "mountConfig");
     517             : 
     518           2 :         mountConfig.rewind ();
     519           4 :         mountConfig.next ();
     520          10 :         EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/user\\/somewhere") << "name of element in keyset wrong";
     521          10 :         EXPECT_EQ (mountConfig.current ().getString (), "This is a configuration for a backend, see subkeys for more information")
     522           0 :                 << "string of element in keyset wrong";
     523           4 :         mountConfig.next ();
     524          10 :         EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/user\\/somewhere/config")
     525           0 :                 << "name of element in keyset wrong";
     526          10 :         EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
     527           4 :         mountConfig.next ();
     528          10 :         EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/user\\/somewhere/config/fcrypt/textmode")
     529           0 :                 << "name of element in keyset wrong";
     530          10 :         EXPECT_EQ (mountConfig.current ().getString (), "0") << "string of element in keyset wrong";
     531           4 :         mountConfig.next ();
     532          10 :         EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/user\\/somewhere/config/global/conf")
     533           0 :                 << "name of element in keyset wrong";
     534          10 :         EXPECT_EQ (mountConfig.current ().getString (), "for backend") << "string of element in keyset wrong";
     535           4 :         mountConfig.next ();
     536          10 :         EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/user\\/somewhere/config/path")
     537           0 :                 << "name of element in keyset wrong";
     538          10 :         EXPECT_EQ (mountConfig.current ().getString (), "abc") << "string of element in keyset wrong";
     539           4 :         mountConfig.next ();
     540          10 :         EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/user\\/somewhere/errorplugins")
     541           0 :                 << "name of element in keyset wrong";
     542          10 :         EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
     543           4 :         mountConfig.next ();
     544          10 :         EXPECT_EQ (mountConfig.current ().getName (),
     545             :                    "system/elektra/mountpoints/user\\/somewhere/errorplugins/#5#resolver_fm_b_b#resolver_fm_b_b#")
     546           0 :                 << "name of element in keyset wrong";
     547          10 :         EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
     548           4 :         mountConfig.next ();
     549          10 :         EXPECT_EQ (mountConfig.current ().getName (),
     550             :                    "system/elektra/mountpoints/user\\/somewhere/errorplugins/#5#resolver_fm_b_b#resolver_fm_b_b#/config")
     551           0 :                 << "name of element in keyset wrong";
     552          10 :         EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
     553           4 :         mountConfig.next ();
     554          10 :         EXPECT_EQ (mountConfig.current ().getName (),
     555             :                    "system/elektra/mountpoints/user\\/somewhere/errorplugins/#5#resolver_fm_b_b#resolver_fm_b_b#/config/something")
     556           0 :                 << "name of element in keyset wrong";
     557          10 :         EXPECT_EQ (mountConfig.current ().getString (), "a val") << "string of element in keyset wrong";
     558           4 :         mountConfig.next ();
     559          10 :         EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/user\\/somewhere/getplugins")
     560           0 :                 << "name of element in keyset wrong";
     561          10 :         EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
     562           2 :         mountConfig.next ();
     563          10 :         EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/user\\/somewhere/getplugins/#0#resolver_fm_b_b")
     564           0 :                 << "name of element in keyset wrong";
     565          10 :         EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
     566           4 :         mountConfig.next ();
     567          10 :         EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/user\\/somewhere/getplugins/#5#dump#dump#")
     568           0 :                 << "name of element in keyset wrong";
     569          10 :         EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
     570           4 :         mountConfig.next ();
     571          10 :         EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/user\\/somewhere/getplugins/#5#dump#dump#/config")
     572           0 :                 << "name of element in keyset wrong";
     573          10 :         EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
     574           4 :         mountConfig.next ();
     575          10 :         EXPECT_EQ (mountConfig.current ().getName (),
     576             :                    "system/elektra/mountpoints/user\\/somewhere/getplugins/#5#dump#dump#/config/res/conf")
     577           0 :                 << "name of element in keyset wrong";
     578          10 :         EXPECT_EQ (mountConfig.current ().getString (), "do it") << "string of element in keyset wrong";
     579           4 :         mountConfig.next ();
     580          10 :         EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/user\\/somewhere/mountpoint")
     581           0 :                 << "name of element in keyset wrong";
     582          10 :         EXPECT_EQ (mountConfig.current ().getString (), "user/somewhere") << "string of element in keyset wrong";
     583           4 :         mountConfig.next ();
     584          10 :         EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/user\\/somewhere/setplugins")
     585           0 :                 << "name of element in keyset wrong";
     586          10 :         EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
     587           4 :         mountConfig.next ();
     588          10 :         EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/user\\/somewhere/setplugins/#0#resolver_fm_b_b")
     589           0 :                 << "name of element in keyset wrong";
     590          10 :         EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
     591           4 :         mountConfig.next ();
     592          10 :         EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/user\\/somewhere/setplugins/#5#dump")
     593           0 :                 << "name of element in keyset wrong";
     594          10 :         EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
     595           4 :         mountConfig.next ();
     596          10 :         EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/user\\/somewhere/setplugins/#7#resolver_fm_b_b")
     597           0 :                 << "name of element in keyset wrong";
     598          10 :         EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
     599           6 : }

Generated by: LCOV version 1.13