21
21
#include <unity/scopes/internal/DfltConfig.h>
22
22
#include <unity/scopes/ScopeExceptions.h>
24
#include <unity/UnityExceptions.h>
26
#include <boost/regex.hpp> // Use Boost implementation until http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53631 is fixed.
24
27
#include <gtest/gtest.h>
26
29
using namespace std;
40
43
EXPECT_EQ(DFLT_MIDDLEWARE_INI, c.default_middleware_configfile());
41
44
EXPECT_EQ(DFLT_REAP_EXPIRY, c.reap_expiry());
42
45
EXPECT_EQ(DFLT_REAP_INTERVAL, c.reap_interval());
46
EXPECT_EQ(DFLT_MAX_LOG_FILE_SIZE, c.max_log_file_size());
47
EXPECT_EQ(DFLT_MAX_LOG_DIR_SIZE, c.max_log_dir_size());
48
EXPECT_TRUE(c.trace_channels().empty());
51
TEST(RuntimeConfig, complete)
53
RuntimeConfig c(TEST_SRC_DIR "/Complete.ini");
54
EXPECT_EQ("R.Id", c.registry_identity());
55
EXPECT_EQ("R.Config", c.registry_configfile());
56
EXPECT_EQ("SS.R.Id", c.ss_registry_identity());
57
EXPECT_EQ("SS.Config", c.ss_configfile());
58
EXPECT_EQ("Zmq", c.default_middleware());
59
EXPECT_EQ("Z.Config", c.default_middleware_configfile());
60
EXPECT_EQ(500, c.reap_expiry());
61
EXPECT_EQ(100, c.reap_interval());
62
EXPECT_EQ("CacheD", c.cache_directory());
63
EXPECT_EQ("AppD", c.app_directory());
64
EXPECT_EQ("ConfigD", c.config_directory());
65
EXPECT_EQ("LogD", c.log_directory());
66
EXPECT_EQ(10000, c.max_log_file_size());
67
EXPECT_EQ(20000, c.max_log_dir_size());
68
EXPECT_EQ(vector<string>{ "IPC" }, c.trace_channels());
45
71
TEST(RuntimeConfig, _default_cache_dir)
98
124
EXPECT_EQ("configdir", c.config_directory());
127
TEST(RuntimeConfig, overridden_log_dir)
131
RuntimeConfig c(TEST_SRC_DIR "/LogDir.ini");
132
EXPECT_EQ("logdir", c.log_directory());
135
TEST(RuntimeConfig, overridden_log_dir_with_home_dir)
137
RuntimeConfig c(TEST_SRC_DIR "/LogDir.ini");
138
EXPECT_EQ("logdir", c.log_directory());
141
TEST(RuntimeConfig, log_dir_env_var_override)
143
setenv("UNITY_SCOPES_LOGDIR", "otherdir", 1);
145
RuntimeConfig c(TEST_SRC_DIR "/LogDir.ini");
146
EXPECT_EQ("otherdir", c.log_directory());
149
TEST(RuntimeConfig, trace_channels_env_var_override)
151
setenv("UNITY_SCOPES_LOG_TRACECHANNELS", "ABC;XYZ;;DEF", 1);
153
RuntimeConfig c(TEST_SRC_DIR "/Complete.ini");
154
EXPECT_EQ((vector<string>{ "ABC", "XYZ", "DEF"}), c.trace_channels());
101
157
TEST(RuntimeConfig, exceptions)
229
RuntimeConfig c(TEST_SRC_DIR "/NoLogDir.ini");
232
catch (ConfigException const& e)
234
// Using regex here because error message returned by glib changed from Utopic to Vivid.
235
// The final .* takes care of the difference. Note that, instead of using TEST_SRC_DIR, we
236
// use .+. That's because, when building with bzr bd, we end up with a '+' in the path,
237
// and that is a regex metacharacter, causing the match to fail.
238
boost::regex r("unity::scopes::ConfigException: \".+/NoLogDir.ini\": "
239
"No LogDir configured and failed to get default:\\n"
240
" unity::ResourceException: RuntimeConfig::default_log_directory\\(\\): \\$HOME not set:\\n"
241
" unity::LogicException: Could not get string value \\(.+/NoLogDir.ini, .*");
242
EXPECT_TRUE(boost::regex_match(e.what(), r)) << e.what();
249
RuntimeConfig c(TEST_SRC_DIR "/NoAppDir.ini");
252
catch (ConfigException const& e)
254
EXPECT_STREQ("unity::scopes::ConfigException: \"" TEST_SRC_DIR "/NoAppDir.ini\": "
255
"No AppDir configured and failed to get default:\n"
256
" unity::ResourceException: RuntimeConfig::default_app_directory(): $HOME not set",
262
RuntimeConfig c(TEST_SRC_DIR "/BadLogFileSize.ini");
265
catch (ConfigException const& e)
267
EXPECT_STREQ("unity::scopes::ConfigException: \"" TEST_SRC_DIR "/BadLogFileSize.ini\": "
268
"Illegal value (999) for Log.MaxFileSize: value must be > 1024",
274
RuntimeConfig c(TEST_SRC_DIR "/BadLogDirSize.ini");
277
catch (ConfigException const& e)
279
EXPECT_STREQ("unity::scopes::ConfigException: \"" TEST_SRC_DIR "/BadLogDirSize.ini\": "
280
"Illegal value (1024) for Log.MaxDirSize: value must be > Log.MaxFileSize (2048)",