From: Piotr Bartosiewicz
Date: Fri, 9 Jan 2015 14:13:36 +0000 (+0100)
Subject: Improve config tests
X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=467ce343680c60bb9d7a368f06ef3b3ca428a7e9;p=platform%2Fcore%2Fsecurity%2Fvasum.git
Improve config tests
[Bug/Feature] N/A
[Cause] N/A
[Solution] N/A
[Verification] Build, install, run tests
Change-Id: I6fc7974d3379d4a96aa712e3e00b8798e6d90181
---
diff --git a/tests/unit_tests/config/testconfig-example.hpp b/tests/unit_tests/config/testconfig-example.hpp
index 35e846e..c8563d0 100644
--- a/tests/unit_tests/config/testconfig-example.hpp
+++ b/tests/unit_tests/config/testconfig-example.hpp
@@ -122,6 +122,18 @@ struct TestConfig {
)
};
+struct PartialTestConfig {
+ // a subset of TestConfig fields
+ std::string stringVal;
+ std::vector intVector;
+
+ CONFIG_REGISTER
+ (
+ stringVal,
+ intVector
+ )
+};
+
/**
* JSON string used in ConfigSuite test cases
* For the purpose of these tests the order of this string
diff --git a/tests/unit_tests/config/ut-configuration.cpp b/tests/unit_tests/config/ut-configuration.cpp
index bbf9ed9..e014f68 100644
--- a/tests/unit_tests/config/ut-configuration.cpp
+++ b/tests/unit_tests/config/ut-configuration.cpp
@@ -27,19 +27,30 @@
#include "ut.hpp"
#include "testconfig-example.hpp"
#include "config/manager.hpp"
+#include "utils/scoped-dir.hpp"
#include
#include
#include
-#include
-namespace fs = boost::filesystem;
+namespace {
+
using namespace config;
-BOOST_AUTO_TEST_SUITE(ConfigurationSuite)
+const std::string UT_PATH = "/tmp/ut-config/";
+const std::string DB_PATH = UT_PATH + "kvstore.db3";
+const std::string DB_PREFIX = "ut";
// Floating point tolerance as a number of rounding errors
const int TOLERANCE = 1;
+struct Fixture {
+ vasum::utils::ScopedDir mUTDirGuard;
+ Fixture() : mUTDirGuard(UT_PATH) {}
+};
+
+} // namespace
+
+BOOST_FIXTURE_TEST_SUITE(ConfigurationSuite, Fixture)
BOOST_AUTO_TEST_CASE(FromStringTest)
{
@@ -249,17 +260,12 @@ BOOST_AUTO_TEST_CASE(FromToKVStoreTest)
TestConfig config;
loadFromJsonString(jsonTestString, config);
- std::string dbPath = fs::unique_path("/tmp/kvstore-%%%%.db3").string();
-
- saveToKVStore(dbPath, config, "prefix");
+ saveToKVStore(DB_PATH, config, DB_PREFIX);
TestConfig outConfig;
- loadFromKVStore(dbPath, outConfig, "prefix");
+ loadFromKVStore(DB_PATH, outConfig, DB_PREFIX);
std::string out = saveToJsonString(outConfig);
BOOST_CHECK_EQUAL(out, jsonTestString);
-
- fs::remove(dbPath);
- fs::remove(dbPath + "-journal");
}
BOOST_AUTO_TEST_CASE(FromToFDTest)
@@ -267,7 +273,7 @@ BOOST_AUTO_TEST_CASE(FromToFDTest)
TestConfig config;
loadFromJsonString(jsonTestString, config);
// Setup fd
- std::string fifoPath = fs::unique_path("/tmp/fdstore-%%%%").string();
+ std::string fifoPath = UT_PATH + "fdstore";
BOOST_CHECK(::mkfifo(fifoPath.c_str(), S_IWUSR | S_IRUSR) >= 0);
int fd = ::open(fifoPath.c_str(), O_RDWR);
BOOST_REQUIRE(fd >= 0);
@@ -281,7 +287,73 @@ BOOST_AUTO_TEST_CASE(FromToFDTest)
// Cleanup
BOOST_CHECK(::close(fd) >= 0);
- fs::remove(fifoPath);
+}
+
+BOOST_AUTO_TEST_CASE(FromKVWithDefaultsTest)
+{
+ TestConfig config;
+ loadFromJsonString(jsonTestString, config);
+
+ // nothing in db
+ TestConfig outConfig1;
+ loadFromKVStoreWithJson(DB_PATH, jsonTestString, outConfig1, DB_PREFIX);
+
+ std::string out1 = saveToJsonString(outConfig1);
+ BOOST_CHECK_EQUAL(out1, jsonTestString);
+
+ // all in db
+ saveToKVStore(DB_PATH, config, DB_PREFIX);
+ TestConfig outConfig2;
+ outConfig2.union1.set(0);
+ outConfig2.union2.set(0);
+ std::string emptyConfig = saveToJsonString(outConfig2);
+ loadFromKVStoreWithJson(DB_PATH, emptyConfig, outConfig2, DB_PREFIX);
+
+ std::string out2 = saveToJsonString(outConfig2);
+ BOOST_CHECK_EQUAL(out2, jsonTestString);
+}
+
+BOOST_AUTO_TEST_CASE(PartialConfigTest)
+{
+ // check if partial config is fully supported
+ TestConfig config;
+ loadFromJsonString(jsonTestString, config);
+
+ // from string
+ {
+ PartialTestConfig partialConfig;
+ loadFromJsonString(jsonTestString, partialConfig);
+
+ BOOST_CHECK_EQUAL(config.stringVal, partialConfig.stringVal);
+ BOOST_CHECK(config.intVector == partialConfig.intVector);
+ }
+
+ // from kv
+ {
+ PartialTestConfig partialConfig;
+ saveToKVStore(DB_PATH, config, DB_PREFIX);
+ loadFromKVStore(DB_PATH, partialConfig, DB_PREFIX);
+
+ BOOST_CHECK_EQUAL(config.stringVal, partialConfig.stringVal);
+ BOOST_CHECK(config.intVector == partialConfig.intVector);
+ }
+
+ // from kv with defaults
+ {
+ PartialTestConfig partialConfig;
+ loadFromKVStoreWithJson(DB_PATH, jsonTestString, partialConfig, DB_PREFIX);
+
+ BOOST_CHECK_EQUAL(config.stringVal, partialConfig.stringVal);
+ BOOST_CHECK(config.intVector == partialConfig.intVector);
+ }
+
+ // save to kv
+ {
+ PartialTestConfig partialConfig;
+ partialConfig.stringVal = "partial";
+ partialConfig.intVector = {7};
+ config::saveToKVStore(DB_PATH, partialConfig, DB_PREFIX);
+ }
}
BOOST_AUTO_TEST_CASE(ConfigUnionTest)
diff --git a/tests/unit_tests/config/ut-dynvisit.cpp b/tests/unit_tests/config/ut-dynvisit.cpp
index dd782f3..2050def 100644
--- a/tests/unit_tests/config/ut-dynvisit.cpp
+++ b/tests/unit_tests/config/ut-dynvisit.cpp
@@ -26,31 +26,32 @@
#include "config.hpp"
#include "ut.hpp"
#include "testconfig-example.hpp"
+#include "utils/scoped-dir.hpp"
#include "config/manager.hpp"
-#include
#include "config/from-kvjson-visitor.hpp"
+namespace {
using namespace config;
-namespace fs = boost::filesystem;
+
+const std::string UT_PATH = "/tmp/ut-config/";
struct Fixture {
+ vasum::utils::ScopedDir mUTDirGuard;
std::string dbPath;
std::string dbPrefix;
Fixture()
- : dbPath(fs::unique_path("/tmp/kvstore-%%%%.db3").string())
+ : mUTDirGuard(UT_PATH)
+ , dbPath(UT_PATH + "kvstore.db3")
, dbPrefix("conf")
{
- fs::remove(dbPath);
- }
- ~Fixture()
- {
- fs::remove(dbPath);
}
};
+} // namespace
+
BOOST_FIXTURE_TEST_SUITE(DynVisitSuite, Fixture)
void checkJsonConfig(const TestConfig& cfg, const std::string& json)
diff --git a/tests/unit_tests/config/ut-kvstore.cpp b/tests/unit_tests/config/ut-kvstore.cpp
index ba95452..9855457 100644
--- a/tests/unit_tests/config/ut-kvstore.cpp
+++ b/tests/unit_tests/config/ut-kvstore.cpp
@@ -28,6 +28,7 @@
#include "config/kvstore.hpp"
#include "config/exception.hpp"
+#include "utils/scoped-dir.hpp"
#include
#include
@@ -38,19 +39,18 @@ namespace fs = boost::filesystem;
namespace {
+const std::string UT_PATH = "/tmp/ut-config/";
+
struct Fixture {
+ vasum::utils::ScopedDir mUTDirGuard;
std::string dbPath;
KVStore c;
Fixture()
- : dbPath(fs::unique_path("/tmp/kvstore-%%%%.db3").string()),
- c(dbPath)
- {
- }
- ~Fixture()
+ : mUTDirGuard(UT_PATH)
+ , dbPath(UT_PATH + "kvstore.db3")
+ , c(dbPath)
{
- fs::remove(dbPath);
- fs::remove(dbPath + "-journal");
}
};
@@ -97,7 +97,6 @@ const std::string KEY = "KEY";
BOOST_AUTO_TEST_CASE(SimpleConstructorDestructorTest)
{
- const std::string dbPath = fs::unique_path("/tmp/kvstore-%%%%.db3").string();
std::unique_ptr conPtr;
BOOST_REQUIRE_NO_THROW(conPtr.reset(new KVStore(dbPath)));
BOOST_CHECK(fs::exists(dbPath));
@@ -105,7 +104,6 @@ BOOST_AUTO_TEST_CASE(SimpleConstructorDestructorTest)
BOOST_CHECK(fs::exists(dbPath));
BOOST_REQUIRE_NO_THROW(conPtr.reset());
BOOST_CHECK(fs::exists(dbPath));
- fs::remove(dbPath);
}
BOOST_AUTO_TEST_CASE(EscapedCharactersTest)