1 #define __STDC_LIMIT_MACROS
5 #include <boost/test/included/unit_test.hpp>
6 #include "../../src/parameter.cpp"
7 #include "../../src/parameter_impl.cpp"
9 // すべての試験関数を含んだ実行ファイルにて試験を実行すると
10 // 先頭試験関数でparameterインスタンスが作成されてしまうため、
11 // 試験対象関数毎に実行ファイルを作成すること
13 using namespace boost::unit_test;
15 class parameter_test : public l7vs::Parameter
20 // Parameter::Parameter() test
21 void parameter_constructor_test()
27 // unit_test [1] parameter constructor check init NG
28 unlink(PARAMETER_FILE);
29 // parameter_test param_test1;
30 // check log "Parameter initialize failure"
32 std::ofstream ofs(PARAMETER_FILE);
34 ofs << "zero_value =" << zero_value << "\n";
37 // unit_test [2] parameter constructor check
38 // parameter_test param_test2;
39 // int ret = param_test2.get_int( l7vs::PARAM_COMP_L7VSD, "zero_value", err );
40 // BOOST_CHECK_EQUAL( ret, zero_value );
42 // unit_test[0] parameter constructor re check
43 parameter_test param_test0;
44 // check log "It's initialized already."
46 unlink(PARAMETER_FILE);
50 // Parameter::init() test
51 void parameter_init_test()
54 std::ofstream ofs(PARAMETER_FILE);
56 ofs << "zero_value = 0\n";
59 parameter_test param_test1;
60 parameter_test param_test2;
62 // unit_test [3] parameter init() check
63 BOOST_CHECK_EQUAL(param_test1.init(l7vs::PARAM_COMP_L7VSD,
64 PARAMETER_FILE), true);
66 // uint_test [4] parameter init() false check
67 BOOST_CHECK_EQUAL(param_test2.init(l7vs::PARAM_COMP_SSL, "./hoge.cf"),
71 unlink(PARAMETER_FILE);
74 // Parameter::read_file() test
75 void parameter_read_file_test()
78 std::ofstream ofs(PARAMETER_FILE);
80 ofs << "zero_value = 0\n";
83 std::ofstream ofs2("./add.cf");
85 ofs2 << "zero_value = 0" << "\n";
88 parameter_test param_test;
90 // unit_test [5] read_file(default file) check
91 BOOST_CHECK_EQUAL(param_test.read_file(l7vs::PARAM_COMP_L7VSD), true);
93 // unit_test [6] read_file(filename) check
95 param_test.read_file(l7vs::PARAM_COMP_SSL, "./add.cf"),
98 // unit_test [7] read_file ( no file ) check
100 param_test.read_file(l7vs::PARAM_COMP_L7VSD, "./hoge.cf"),
103 unlink(PARAMETER_FILE);
107 // Parameter::get_int() test
108 void parameter_get_int_test()
111 l7vs::error_code err;
115 std::ofstream ofs(PARAMETER_FILE);
117 ofs << "zero_value = " << zero_value << "\n";
120 parameter_test param_test;
122 // unit_test [8] get_int call check
123 ret = param_test.get_int(l7vs::PARAM_COMP_L7VSD, "zero_value", err);
124 BOOST_CHECK_EQUAL(ret, zero_value);
126 unlink(PARAMETER_FILE);
129 // Parameter::get_string() test
130 void parameter_get_string_test()
133 l7vs::error_code err;
134 std::string str_value = "\"strings\"";
135 std::string ret_str = "ZZZZ";
137 std::ofstream ofs(PARAMETER_FILE);
139 ofs << "string_value = " << str_value << "\n";
142 parameter_test param_test;
144 // unit_test [9] get_string call check
145 ret_str = param_test.get_string(l7vs::PARAM_COMP_L7VSD,
146 "string_value", err);
147 BOOST_CHECK_EQUAL(err, false);
148 BOOST_CHECK_EQUAL(ret_str, "strings");
150 unlink(PARAMETER_FILE);
153 // Parameter::get_multistring() test
154 void parameter_get_multistring_test()
157 l7vs::error_code err;
158 std::string str_value_1 = "\"strings_1\"";
159 std::string str_value_2 = "\"strings_2\"";
160 std::vector<std::string> ret_vec;
162 std::ofstream ofs(PARAMETER_FILE);
164 ofs << "string_value = " << str_value_1 << "\n";
165 ofs << "string_value = " << str_value_2 << "\n";
168 parameter_test param_test;
170 // unit_test [10] get_multistring call check
171 param_test.get_multistring(l7vs::PARAM_COMP_SSL,
172 "string_value", ret_vec, err);
173 BOOST_CHECK_EQUAL(ret_vec.size(), (unsigned int)2);
174 BOOST_CHECK_EQUAL(ret_vec[0], "strings_1");
175 BOOST_CHECK_EQUAL(ret_vec[1], "strings_2");
177 unlink(PARAMETER_FILE);
183 void parameter_read_pattern0()
186 l7vs::PARAMETER_COMPONENT_TAG comp_tag[10] = {
187 l7vs::PARAM_COMP_L7VSD, //!< parameter category l7vsd
188 l7vs::PARAM_COMP_COMMAND, //!< parameter category command
189 l7vs::PARAM_COMP_SESSION, //!< parameter category session
190 l7vs::PARAM_COMP_VIRTUALSERVICE, //!< parameter category virtualservice
191 l7vs::PARAM_COMP_MODULE, //!< parameter category module control
192 l7vs::PARAM_COMP_REPLICATION, //!< parameter category replication
193 l7vs::PARAM_COMP_LOGGER, //!< parameter category logger
194 l7vs::PARAM_COMP_L7VSADM, //!< parameter category l7vsadm
195 l7vs::PARAM_COMP_SNMPAGENT, //!< parameter category snmpagent
197 }; //!< parameter category ssl
198 l7vs::error_code err;
199 // create init files.
200 std::string sectionstrings[10];
201 sectionstrings[0] = "l7vsd";
202 sectionstrings[1] = "command";
203 sectionstrings[2] = "session";
204 sectionstrings[3] = "virtualservice";
205 sectionstrings[4] = "module";
206 sectionstrings[5] = "replication";
207 sectionstrings[6] = "logger";
208 sectionstrings[7] = "l7vsadm";
209 sectionstrings[8] = "snmpagent";
210 std::string keystr[2];
213 std::string valuestr[2];
215 valuestr[1] = "\"strings\"";
217 valuestr[3] = "\"strings2\"";
218 std::ofstream ofs(PARAMETER_FILE);
219 for (int i = 0 ; i < 9; ++i) {
220 ofs << "[" << sectionstrings[i] << "]\n";
221 ofs << keystr[0] << "=" << valuestr[0] << "\n";
222 ofs << keystr[1] << " = " << valuestr[1] << "\n";
224 ofs << "[" << sectionstrings[0] << "]\n";
225 ofs << keystr[0] << "=" << valuestr[2] << std::endl; // overwrite check
226 ofs << keystr[1] << " = " << valuestr[3] << std::endl; // overwrite check
229 // unit_test[a1] default file read
230 parameter_test param;
232 for (int i = 0; i < 9; ++i) {
234 BOOST_CHECK_EQUAL(param.get_int(comp_tag[i],
235 keystr[0], err, PARAMETER_FILE), 2);
236 BOOST_CHECK_EQUAL(param.get_string(comp_tag[i],
237 keystr[1], err, PARAMETER_FILE), "strings2");
239 BOOST_CHECK_EQUAL(param.get_int(comp_tag[i],
240 keystr[0], err, PARAMETER_FILE), 1);
241 BOOST_CHECK_EQUAL(param.get_string(comp_tag[i],
242 keystr[1], err, PARAMETER_FILE), "strings");
245 unlink(PARAMETER_FILE);
248 // read file pattern1
249 void parameter_read_pattern1()
257 l7vs::error_code err;
258 std::vector<std::string> strvec;
261 std::ofstream ofs("./ssl1.cf");
263 ofs << "string_value0 = \"ssl_10\"\n";
264 ofs << "mstring_value = \"ssl_11\"\n";
265 ofs << "mstring_value = \"ssl_12\"\n";
266 ofs << "int_value = 10\n";
270 parameter_read_pattern0();
272 parameter_test param;
274 param.init(l7vs::PARAM_COMP_SSL, "./ssl1.cf");
276 BOOST_CHECK_EQUAL(param.get_int(l7vs::PARAM_COMP_SSL,
277 "int_value", err, "./ssl1.cf"), 10);
278 BOOST_CHECK_EQUAL(param.get_string(l7vs::PARAM_COMP_SSL,
279 "string_value0", err, "./ssl1.cf"), "ssl_10");
280 param.get_multistring(l7vs::PARAM_COMP_SSL, "mstring_value",
281 strvec, err, "./ssl1.cf");
282 BOOST_CHECK_EQUAL(strvec[0], "ssl_11");
283 BOOST_CHECK_EQUAL(strvec[1], "ssl_12");
288 std::ofstream ofs("./ssl1.cf");
290 ofs << "string_value0 = \"ssl_20\"\n";
291 ofs << "m2string_value = \"ssl_21\"\n";
292 ofs << "m2string_value = \"ssl_22\"\n";
293 ofs << "int_value = 20\n";
297 param.init(l7vs::PARAM_COMP_SSL, "./ssl1.cf");
299 BOOST_CHECK_EQUAL(param.get_int(l7vs::PARAM_COMP_SSL,
300 "int_value", err, "./ssl1.cf"), 20);
301 BOOST_CHECK_EQUAL(param.get_string(l7vs::PARAM_COMP_SSL,
302 "string_value0", err, "./ssl1.cf"), "ssl_20");
303 param.get_multistring(l7vs::PARAM_COMP_SSL, "mstring_value",
304 strvec, err, "./ssl1.cf");
305 BOOST_CHECK_EQUAL(err, true);
306 param.get_multistring(l7vs::PARAM_COMP_SSL, "m2string_value",
307 strvec, err, "./ssl1.cf");
308 BOOST_CHECK_EQUAL(strvec[0], "ssl_21");
309 BOOST_CHECK_EQUAL(strvec[1], "ssl_22");
315 // read file pattern2
316 void parameter_read_pattern2()
323 l7vs::error_code err;
324 std::vector<std::string> strvec;
327 std::ofstream ofs("./ssl1.cf");
329 ofs << "string_value0 = \"ssl_10\"\n";
330 ofs << "mstring_value = \"ssl_11\"\n";
331 ofs << "mstring_value = \"ssl_12\"\n";
332 ofs << "int_value = 10\n";
336 parameter_read_pattern0();
338 parameter_test param;
340 param.init(l7vs::PARAM_COMP_SSL, "./ssl1.cf");
342 BOOST_CHECK_EQUAL(param.get_int(l7vs::PARAM_COMP_SSL,
343 "int_value", err, "./ssl1.cf"), 10);
344 BOOST_CHECK_EQUAL(param.get_string(l7vs::PARAM_COMP_SSL,
345 "string_value0", err, "./ssl1.cf"), "ssl_10");
346 param.get_multistring(l7vs::PARAM_COMP_SSL, "mstring_value",
347 strvec, err, "./ssl1.cf");
348 BOOST_CHECK_EQUAL(strvec[0], "ssl_11");
349 BOOST_CHECK_EQUAL(strvec[1], "ssl_12");
352 param.init(l7vs::PARAM_COMP_SSL, "./ssl1.cf");
354 BOOST_CHECK_EQUAL(param.get_int(l7vs::PARAM_COMP_SSL,
355 "int_value", err, "./ssl1.cf"), 10);
356 BOOST_CHECK_EQUAL(param.get_string(l7vs::PARAM_COMP_SSL,
357 "string_value0", err, "./ssl1.cf"), "ssl_10");
358 param.get_multistring(l7vs::PARAM_COMP_SSL, "mstring_value",
359 strvec, err, "./ssl1.cf");
360 BOOST_CHECK_EQUAL(strvec[0], "ssl_11");
361 BOOST_CHECK_EQUAL(strvec[1], "ssl_12");
366 // read file pattern3
367 void parameter_read_pattern3()
374 l7vs::error_code err;
375 std::vector<std::string> strvec;
378 std::ofstream ofs("./ssl1.cf");
380 ofs << "string_value0 = \"ssl_10\"\n";
381 ofs << "mstring_value = \"ssl_11\"\n";
382 ofs << "mstring_value = \"ssl_12\"\n";
383 ofs << "int_value = 10\n";
387 parameter_read_pattern0();
389 parameter_test param;
391 param.init(l7vs::PARAM_COMP_SSL, "./ssl1.cf");
393 BOOST_CHECK_EQUAL(param.get_int(l7vs::PARAM_COMP_SSL,
394 "int_value", err, "./ssl1.cf"), 10);
395 BOOST_CHECK_EQUAL(param.get_string(l7vs::PARAM_COMP_SSL,
396 "string_value0", err, "./ssl1.cf"), "ssl_10");
397 param.get_multistring(l7vs::PARAM_COMP_SSL, "mstring_value",
398 strvec, err, "./ssl1.cf");
399 BOOST_CHECK_EQUAL(strvec[0], "ssl_11");
400 BOOST_CHECK_EQUAL(strvec[1], "ssl_12");
404 std::ofstream ofs("./ssl2.cf");
406 ofs << "string_value0 = \"ssl_20\"\n";
407 ofs << "m2string_value = \"ssl_21\"\n";
408 ofs << "m2string_value = \"ssl_22\"\n";
409 ofs << "int_value = 20\n";
413 param.init(l7vs::PARAM_COMP_SSL, "./ssl2.cf");
415 BOOST_CHECK_EQUAL(param.get_int(l7vs::PARAM_COMP_SSL,
416 "int_value", err, "./ssl1.cf"), 10);
417 BOOST_CHECK_EQUAL(param.get_string(l7vs::PARAM_COMP_SSL,
418 "string_value0", err, "./ssl1.cf"), "ssl_10");
419 param.get_multistring(l7vs::PARAM_COMP_SSL, "mstring_value",
420 strvec, err, "./ssl1.cf");
421 BOOST_CHECK_EQUAL(strvec[0], "ssl_11");
422 BOOST_CHECK_EQUAL(strvec[1], "ssl_12");
423 param.get_multistring(l7vs::PARAM_COMP_SSL, "m2string_value",
424 strvec, err, "./ssl1.cf");
425 BOOST_CHECK_EQUAL(err, true);
427 BOOST_CHECK_EQUAL(param.get_int(l7vs::PARAM_COMP_SSL,
428 "int_value", err, "./ssl2.cf"), 20);
429 BOOST_CHECK_EQUAL(param.get_string(l7vs::PARAM_COMP_SSL,
430 "string_value0", err, "./ssl2.cf"), "ssl_20");
431 param.get_multistring(l7vs::PARAM_COMP_SSL, "mstring_value",
432 strvec, err, "./ssl2.cf");
433 BOOST_CHECK_EQUAL(err, true);
434 param.get_multistring(l7vs::PARAM_COMP_SSL, "m2string_value",
435 strvec, err, "./ssl2.cf");
436 BOOST_CHECK_EQUAL(strvec[0], "ssl_21");
437 BOOST_CHECK_EQUAL(strvec[1], "ssl_22");
445 test_suite *init_unit_test_suite(int argc, char *argv[])
449 l7vs::Logger logger_instance;
450 logger_instance.loadConf();
452 // create unit test suite
453 // !!!! target test case is only one
454 test_suite *ts = BOOST_TEST_SUITE("parameter");
455 // ts->add( BOOST_TEST_CASE( ¶meter_constructor_test ) );
456 // ts->add( BOOST_TEST_CASE( ¶meter_init_test ) );
457 // ts->add( BOOST_TEST_CASE( ¶meter_read_file_test ) );
458 // ts->add( BOOST_TEST_CASE( ¶meter_get_int_test ) );
459 // ts->add( BOOST_TEST_CASE( ¶meter_get_string_test ) );
460 // ts->add( BOOST_TEST_CASE( ¶meter_get_multistring_test ) );
461 // ts->add( BOOST_TEST_CASE( ¶meter_read_pattern1 ) );
462 // ts->add( BOOST_TEST_CASE( ¶meter_read_pattern2 ) );
463 ts->add(BOOST_TEST_CASE(¶meter_read_pattern3));
465 framework::master_test_suite().add(ts);