~mardy/unity-scopes-api/clientid-1554040

« back to all changes in this revision

Viewing changes to test/gtest/scopes/internal/RuntimeConfig/RuntimeConfig_test.cpp

  • Committer: Michi Henning
  • Date: 2015-02-25 05:20:57 UTC
  • mfrom: (163.386.1 devel)
  • mto: (163.386.2 devel)
  • mto: This revision was merged to the branch mainline in revision 324.
  • Revision ID: michi.henning@canonical.com-20150225052057-9p21sge1myzaowcb
Merged devel and resolved conflicts.

Show diffs side-by-side

added added

removed removed

Lines of Context:
21
21
#include <unity/scopes/internal/DfltConfig.h>
22
22
#include <unity/scopes/ScopeExceptions.h>
23
23
 
 
24
#include <unity/UnityExceptions.h>
 
25
 
 
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>
25
28
 
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());
 
49
}
 
50
 
 
51
TEST(RuntimeConfig, complete)
 
52
{
 
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());
43
69
}
44
70
 
45
71
TEST(RuntimeConfig, _default_cache_dir)
98
124
    EXPECT_EQ("configdir", c.config_directory());
99
125
}
100
126
 
 
127
TEST(RuntimeConfig, overridden_log_dir)
 
128
{
 
129
    unsetenv("HOME");
 
130
 
 
131
    RuntimeConfig c(TEST_SRC_DIR "/LogDir.ini");
 
132
    EXPECT_EQ("logdir", c.log_directory());
 
133
}
 
134
 
 
135
TEST(RuntimeConfig, overridden_log_dir_with_home_dir)
 
136
{
 
137
    RuntimeConfig c(TEST_SRC_DIR "/LogDir.ini");
 
138
    EXPECT_EQ("logdir", c.log_directory());
 
139
}
 
140
 
 
141
TEST(RuntimeConfig, log_dir_env_var_override)
 
142
{
 
143
    setenv("UNITY_SCOPES_LOGDIR", "otherdir", 1);
 
144
 
 
145
    RuntimeConfig c(TEST_SRC_DIR "/LogDir.ini");
 
146
    EXPECT_EQ("otherdir", c.log_directory());
 
147
}
 
148
 
 
149
TEST(RuntimeConfig, trace_channels_env_var_override)
 
150
{
 
151
    setenv("UNITY_SCOPES_LOG_TRACECHANNELS", "ABC;XYZ;;DEF", 1);
 
152
 
 
153
    RuntimeConfig c(TEST_SRC_DIR "/Complete.ini");
 
154
    EXPECT_EQ((vector<string>{ "ABC", "XYZ", "DEF"}), c.trace_channels());
 
155
}
 
156
 
101
157
TEST(RuntimeConfig, exceptions)
102
158
{
103
159
    try
142
198
 
143
199
        RuntimeConfig c(TEST_SRC_DIR "/NoCacheDir.ini");
144
200
        FAIL();
145
 
        EXPECT_EQ("cachedir", c.cache_directory());
146
201
    }
147
202
    catch (ConfigException const& e)
148
203
    {
158
213
 
159
214
        RuntimeConfig c(TEST_SRC_DIR "/NoConfigDir.ini");
160
215
        FAIL();
161
 
        EXPECT_EQ("cachedir", c.cache_directory());
162
216
    }
163
217
    catch (ConfigException const& e)
164
218
    {
167
221
                     "$HOME not set",
168
222
                     e.what());
169
223
    }
 
224
 
 
225
    try
 
226
    {
 
227
        unsetenv("HOME");
 
228
 
 
229
        RuntimeConfig c(TEST_SRC_DIR "/NoLogDir.ini");
 
230
        FAIL();
 
231
    }
 
232
    catch (ConfigException const& e)
 
233
    {
 
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();
 
243
    }
 
244
 
 
245
    try
 
246
    {
 
247
        unsetenv("HOME");
 
248
 
 
249
        RuntimeConfig c(TEST_SRC_DIR "/NoAppDir.ini");
 
250
        FAIL();
 
251
    }
 
252
    catch (ConfigException const& e)
 
253
    {
 
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",
 
257
                     e.what());
 
258
    }
 
259
 
 
260
    try
 
261
    {
 
262
        RuntimeConfig c(TEST_SRC_DIR "/BadLogFileSize.ini");
 
263
        FAIL();
 
264
    }
 
265
    catch (ConfigException const& e)
 
266
    {
 
267
        EXPECT_STREQ("unity::scopes::ConfigException: \"" TEST_SRC_DIR "/BadLogFileSize.ini\": "
 
268
                     "Illegal value (999) for Log.MaxFileSize: value must be > 1024",
 
269
                     e.what());
 
270
    }
 
271
 
 
272
    try
 
273
    {
 
274
        RuntimeConfig c(TEST_SRC_DIR "/BadLogDirSize.ini");
 
275
        FAIL();
 
276
    }
 
277
    catch (ConfigException const& e)
 
278
    {
 
279
        EXPECT_STREQ("unity::scopes::ConfigException: \"" TEST_SRC_DIR "/BadLogDirSize.ini\": "
 
280
                     "Illegal value (1024) for Log.MaxDirSize: value must be > Log.MaxFileSize (2048)",
 
281
                     e.what());
 
282
    }
170
283
}