3 #include <boost/test/included/unit_test.hpp>
4 #include <boost/algorithm/string.hpp>
6 //#include "error_code.h"
11 #include "protocol_module_stub.h"
12 #include "schedule_module_stub.h"
13 #include "protocol_module_control_stub.h"
14 #include "schedule_module_control_stub.h"
15 #include "logger_access_manager_stub.h"
17 #include "../../src/l7vsadm.cpp"
19 #ifndef COMMAND_BUFFER_SIZE
20 #define COMMAND_BUFFER_SIZE (65535)
22 #ifndef L7VS_CONFIG_SOCKNAME
23 #define L7VS_CONFIG_SOCKNAME "./l7vs"
26 using namespace boost::unit_test_framework;
30 class l7vsadm_test :public l7vs::l7vsadm {
33 l7vs::l7vsadm_request& get_request() { return request; }
34 l7vs::l7vsd_response& get_response() { return response; }
36 l7vs::error_code& get_error() { return l7vsadm_err; }
38 bool& get_numeric() { return numeric_flag; }
40 bool parse_list_func_wp( l7vs::l7vsadm_request::COMMAND_CODE_TAG cmd, int argc, char* argv[] )
41 { return parse_list_func( cmd, argc, argv ); }
43 bool parse_opt_vs_target_func_wp( int& pos, int argc, char* argv[] )
44 { return parse_opt_vs_target_func( pos, argc, argv ); }
46 bool parse_opt_vs_module_func_wp( int& pos, int argc, char* argv[] )
47 { return parse_opt_vs_module_func( pos, argc, argv ); }
49 bool parse_opt_vs_scheduler_func_wp( int& pos, int argc, char* argv[] )
50 { return parse_opt_vs_scheduler_func( pos, argc, argv ); }
52 bool parse_opt_vs_upper_func_wp( int& pos, int argc, char* argv[] )
53 { return parse_opt_vs_upper_func( pos, argc, argv ); }
55 bool parse_opt_vs_bypass_func_wp( int& pos, int argc, char* argv[] )
56 { return parse_opt_vs_bypass_func( pos, argc, argv ); }
58 bool parse_opt_vs_flag_func_wp( int& pos, int argc, char* argv[] )
59 { return parse_opt_vs_flag_func( pos, argc, argv ); }
61 bool parse_opt_vs_qosup_func_wp( int& pos, int argc, char* argv[] )
62 { return parse_opt_vs_qosup_func( pos, argc, argv ); }
64 bool parse_opt_vs_qosdown_func_wp( int& pos, int argc, char* argv[] )
65 { return parse_opt_vs_qosdown_func( pos, argc, argv ); }
67 bool parse_opt_vs_udp_func_wp( int& pos, int argc, char* argv[] )
68 { return parse_opt_vs_udp_func( pos, argc, argv ); }
70 bool parse_opt_vs_ssl_file_func_wp( int& pos, int argc, char* argv[] )
71 { return parse_opt_vs_ssl_file_func( pos, argc, argv ); }
73 bool parse_opt_vs_access_log_func_wp( int& pos, int argc, char* argv[] )
74 { return parse_opt_vs_access_log_func( pos, argc, argv ); }
76 bool parse_opt_vs_access_log_logrotate_func_wp( int& pos, int argc, char* argv[] )
77 { return parse_opt_vs_access_log_logrotate_func( pos, argc, argv ); }
79 bool parse_opt_vs_socket_func_wp( int& pos, int argc, char* argv[] )
80 { return parse_opt_vs_socket_func( pos, argc, argv ); }
82 bool parse_vs_func_wp( l7vs::l7vsadm_request::COMMAND_CODE_TAG cmd, int argc, char* argv[] )
83 { return parse_vs_func( cmd, argc, argv ); }
85 bool parse_opt_rs_weight_func_wp( int& pos, int argc, char* argv[] )
86 { return parse_opt_rs_weight_func( pos, argc, argv ); }
88 bool parse_opt_rs_realserver_func_wp( int& pos, int argc, char* argv[] )
89 { return parse_opt_rs_realserver_func( pos, argc, argv ); }
91 bool parse_rs_func_wp( l7vs::l7vsadm_request::COMMAND_CODE_TAG cmd, int argc, char* argv[] )
92 { return parse_rs_func( cmd, argc, argv ); }
94 bool parse_opt_replication_switch_func_wp( int& pos, int argc, char* argv[] )
95 { return parse_opt_replication_switch_func( pos, argc, argv ); }
97 bool parse_opt_replication_force_func_wp( int& pos, int argc, char* argv[] )
98 { return parse_opt_replication_force_func( pos, argc, argv ); }
100 bool parse_opt_replication_dump_func_wp( int& pos, int argc, char* argv[] )
101 { return parse_opt_replication_dump_func( pos, argc, argv ); }
103 bool parse_replication_func_wp( l7vs::l7vsadm_request::COMMAND_CODE_TAG cmd, int argc, char* argv[] )
104 { return parse_replication_func( cmd, argc, argv ); }
106 bool parse_opt_log_category_func_wp( int& pos, int argc, char* argv[] )
107 { return parse_opt_log_category_func( pos, argc, argv ); }
109 bool parse_opt_log_level_func_wp( int& pos, int argc, char* argv[] )
110 { return parse_opt_log_level_func( pos, argc, argv ); }
112 bool parse_log_func_wp( l7vs::l7vsadm_request::COMMAND_CODE_TAG cmd, int argc, char* argv[] )
113 { return parse_log_func( cmd, argc, argv ); }
115 bool parse_opt_snmp_log_category_func_wp( int& pos, int argc, char* argv[] )
116 { return parse_opt_snmp_log_category_func( pos, argc, argv ); }
118 bool parse_opt_snmp_log_level_func_wp( int& pos, int argc, char* argv[] )
119 { return parse_opt_snmp_log_level_func( pos, argc, argv ); }
121 bool parse_snmp_func_wp( l7vs::l7vsadm_request::COMMAND_CODE_TAG cmd, int argc, char* argv[] )
122 { return parse_snmp_func( cmd, argc, argv ); }
124 bool parse_opt_parameter_reload_func_wp( int& pos, int argc, char* argv[] )
125 { return parse_opt_parameter_reload_func( pos, argc, argv ); }
127 bool parse_parameter_func_wp( l7vs::l7vsadm_request::COMMAND_CODE_TAG cmd, int argc, char* argv[] )
128 { return parse_parameter_func( cmd, argc, argv ); }
130 bool execute_wp( int argc, char* argv[] )
131 { return execute( argc, argv ); }
133 bool parse_opt_vs_fwdmode_func_wp( int& pos, int argc, char* argv[] )
134 { return parse_opt_vs_fwdmode_func( pos, argc, argv ); }
136 bool parse_opt_rs_fwdmode_func_wp( int& pos, int argc, char* argv[] )
137 { return parse_opt_rs_fwdmode_func( pos, argc, argv ); }
139 static void file_lock_class_test();
144 //boost::mutex accept_mutex;
145 //boost::condition accept_condition;
146 volatile bool accept_ready;
148 l7vs::l7vsadm_request test_request;
149 l7vs::l7vsd_response test_response;
152 void server_thread(){
153 using boost::asio::local::stream_protocol;
155 boost::array< char,COMMAND_BUFFER_SIZE > buf;
159 std::cout << "sock:" << L7VS_CONFIG_SOCKNAME << std::endl;
160 boost::asio::io_service server_io;
161 stream_protocol::acceptor acc( server_io,
162 stream_protocol::endpoint( L7VS_CONFIG_SOCKNAME ) );
163 stream_protocol::socket s( server_io );
167 //accept_condition.notify_all();
168 //std::cout << "accept_ready" << std::endl;
171 //std::cout << "accepted" << std::endl;
174 s.read_some( boost::asio::buffer( buf ) );
175 //std::cout << "read_done" << std::endl;
177 std::stringstream recv_stream;
178 recv_stream << &(buf[0]);
179 boost::archive::text_iarchive ia( recv_stream );
182 std::stringstream send_stream;
183 boost::archive::text_oarchive oa( send_stream );
184 oa << (const l7vs::l7vsd_response&) test_response;
187 boost::asio::write( s, boost::asio::buffer( send_stream.str() ) );
188 //std::cout << "write_done" << std::endl;
192 unlink( L7VS_CONFIG_SOCKNAME );
193 //std::cout << "unlink" << std::endl;
197 template< typename InternetProtocol >
198 boost::asio::ip::basic_endpoint< InternetProtocol > string_to_endpoint( std::string str ){
199 std::string::size_type pos = str.rfind( ":" );
200 std::string hostname = str.substr( 0, pos );
201 std::string portname = str.substr( pos+1, str.length() );
203 boost::algorithm::erase_first( hostname, "[" );
204 boost::algorithm::erase_last( hostname, "]" );
206 boost::asio::io_service io_service;
207 typename InternetProtocol::resolver resolver(io_service);
208 typename InternetProtocol::resolver::query query( hostname, portname );
209 typename InternetProtocol::resolver::iterator end;
210 typename InternetProtocol::resolver::iterator itr = resolver.resolve( query );
211 if( itr == end ) return typename InternetProtocol::endpoint();
216 void parse_list_func_test(){
217 BOOST_MESSAGE( "----- parse_list_func_test start -----" );
219 // parse_list_func normal case 1 (no option)
222 l7vs::l7vsadm_request::COMMAND_CODE_TAG cmd = l7vs::l7vsadm_request::CMD_LIST;
224 char* argv[] = { "l7vsadm_test", "-l" };
226 bool ret = adm.parse_list_func_wp( cmd, argc, argv );
228 // unit_test[1] parse_list_func normal case 1 (no option) return value check
229 BOOST_CHECK_EQUAL( ret, true );
230 // unit_test[2] parse_list_func normal case 1 (no option) request check
231 BOOST_CHECK_EQUAL( adm.get_request().command, l7vs::l7vsadm_request::CMD_LIST );
234 // parse_list_func normal case 2 (with num option short)
237 l7vs::l7vsadm_request::COMMAND_CODE_TAG cmd = l7vs::l7vsadm_request::CMD_LIST;
239 char* argv[] = { "l7vsadm_test", "-l", "-n" };
241 bool ret = adm.parse_list_func_wp( cmd, argc, argv );
243 // unit_test[3] parse_list_func normal case 2 (with num option short) return value check
244 BOOST_CHECK_EQUAL( ret, true );
245 // unit_test[4] parse_list_func normal case 2 (with num option short) request check
246 BOOST_CHECK_EQUAL( adm.get_request().command, l7vs::l7vsadm_request::CMD_LIST );
247 // unit_test[5] parse_list_func normal case 2 (with num option short) nummeric flag check
248 BOOST_CHECK_EQUAL( adm.get_numeric(), true );
251 // parse_list_func normal case 3 (with num option long)
254 l7vs::l7vsadm_request::COMMAND_CODE_TAG cmd = l7vs::l7vsadm_request::CMD_LIST;
256 char* argv[] = { "l7vsadm_test", "-l", "--numeric" };
258 bool ret = adm.parse_list_func_wp( cmd, argc, argv );
260 // unit_test[6] parse_list_func normal case 3 (with num option long) return value check
261 BOOST_CHECK_EQUAL( ret, true );
262 // unit_test[7] parse_list_func normal case 3 (with num option long) request check
263 BOOST_CHECK_EQUAL( adm.get_request().command, l7vs::l7vsadm_request::CMD_LIST );
264 // unit_test[8] parse_list_func normal case 3 (with num option long) nummeric flag check
265 BOOST_CHECK_EQUAL( adm.get_numeric(), true );
268 // parse_list_func error case 1 (invarid option)
271 l7vs::l7vsadm_request::COMMAND_CODE_TAG cmd = l7vs::l7vsadm_request::CMD_LIST;
273 char* argv[] = { "l7vsadm_test", "-l", "-z" };
275 bool ret = adm.parse_list_func_wp( cmd, argc, argv );
277 // unit_test[9] parse_list_func error case 1 (invarid option) return value check
278 BOOST_CHECK_EQUAL( ret, false );
281 BOOST_MESSAGE( "----- parse_list_func_test end -----" );
285 void parse_opt_vs_target_func_test(){
286 BOOST_MESSAGE( "----- parse_opt_vs_target_func_test start -----" );
288 // parse_opt_vs_target_func normal case 1 (tcp endpoint)
293 char* argv[] = { "l7vsadm_test", "-A", "-t", "10.144.169.87:22100" };
295 bool ret = adm.parse_opt_vs_target_func_wp( pos, argc, argv );
297 // unit_test[10] parse_opt_vs_target_func normal case 1 (tcp endpoint) return value check
298 BOOST_CHECK_EQUAL( ret, true );
299 // unit_test[11] parse_opt_vs_target_func normal case 1 (tcp endpoint) endpoint check
300 boost::asio::ip::tcp::endpoint ep = string_to_endpoint<boost::asio::ip::tcp>( "10.144.169.87:22100" );
301 BOOST_CHECK_EQUAL( adm.get_request().vs_element.tcp_accept_endpoint, ep );
304 // parse_opt_vs_target_func normal case 2 (udp endpoint)
309 char* argv[] = { "l7vsadm_test", "-A", "-t", "10.144.169.87:22100" };
310 adm.get_request().vs_element.udpmode = true;
312 bool ret = adm.parse_opt_vs_target_func_wp( pos, argc, argv );
314 // unit_test[12] parse_opt_vs_target_func normal case 2 (udp endpoint) return value check
315 BOOST_CHECK_EQUAL( ret, true );
316 // unit_test[13] parse_opt_vs_target_func normal case 2 (udp endpoint) endpoint check
317 boost::asio::ip::udp::endpoint ep = string_to_endpoint<boost::asio::ip::udp>( "10.144.169.87:22100" );
318 BOOST_CHECK_EQUAL( adm.get_request().vs_element.udp_recv_endpoint, ep );
321 // parse_opt_vs_target_func normal case 3 (tcp endpoint specified in name)
326 char* argv[] = { "l7vsadm_test", "-A", "-t", "127.0.0.1:pop3" };
328 bool ret = adm.parse_opt_vs_target_func_wp( pos, argc, argv );
330 // unit_test[14] parse_opt_vs_target_func normal case 3 (tcp endpoint specified in name) return value check
331 BOOST_CHECK_EQUAL( ret, true );
332 // unit_test[15] parse_opt_vs_target_func normal case 3 (tcp endpoint specified in name) endpoint check
333 boost::asio::ip::tcp::endpoint ep = string_to_endpoint<boost::asio::ip::tcp>( "127.0.0.1:110" );
334 BOOST_CHECK_EQUAL( adm.get_request().vs_element.tcp_accept_endpoint, ep );
338 // parse_opt_vs_target_func normal case 4 (any address)
343 char* argv[] = { "l7vsadm_test", "-A", "-t", "0.0.0.0:8080" };
345 bool ret = adm.parse_opt_vs_target_func_wp( pos, argc, argv );
347 // unit_test[xx] parse_opt_vs_target_func normal case 4 (any address) return value check
348 BOOST_CHECK_EQUAL( ret, true );
349 // unit_test[xx] parse_opt_vs_target_func normal case 4 (any address) endpoint check
350 boost::asio::ip::tcp::endpoint ep = string_to_endpoint<boost::asio::ip::tcp>( "0.0.0.0:8080" );
351 BOOST_CHECK_EQUAL( adm.get_request().vs_element.tcp_accept_endpoint, ep );
355 // parse_opt_vs_target_func normal case 5 (tcp endpoint(ipv6))
360 char* argv[] = { "l7vsadm_test", "-A", "-t", "[2001::11]:8080" };
362 bool ret = adm.parse_opt_vs_target_func_wp( pos, argc, argv );
364 // unit_test[xx] parse_opt_vs_target_func normal case 4 (tcp endpoint(ipv6)) return value check
365 BOOST_CHECK_EQUAL( ret, true );
366 // unit_test[xx] parse_opt_vs_target_func normal case 4 (tcp endpoint(ipv6)) endpoint check
367 boost::asio::ip::tcp::endpoint ep = string_to_endpoint<boost::asio::ip::tcp>( "[2001::11]:8080" );
368 BOOST_CHECK_EQUAL( adm.get_request().vs_element.tcp_accept_endpoint, ep );
372 // parse_opt_vs_target_func normal case 6 (udp endpoint(ipv6))
377 char* argv[] = { "l7vsadm_test", "-A", "-t", "[2001::11]:8080" };
378 adm.get_request().vs_element.udpmode = true;
380 bool ret = adm.parse_opt_vs_target_func_wp( pos, argc, argv );
382 // unit_test[xx] parse_opt_vs_target_func normal case 6 (udp endpoint(ipv6)) return value check
383 BOOST_CHECK_EQUAL( ret, true );
384 // unit_test[xx] parse_opt_vs_target_func normal case 6 (udp endpoint(ipv6)) endpoint check
385 boost::asio::ip::udp::endpoint ep = string_to_endpoint<boost::asio::ip::udp>( "[2001::11]:8080" );
386 BOOST_CHECK_EQUAL( adm.get_request().vs_element.udp_recv_endpoint, ep );
390 // parse_opt_vs_target_func normal case 5 (any address(ipv6))
395 char* argv[] = { "l7vsadm_test", "-A", "-t", "[::]:8080" };
397 bool ret = adm.parse_opt_vs_target_func_wp( pos, argc, argv );
399 // unit_test[xx] parse_opt_vs_target_func normal case 4 (any address(ipv6)) return value check
400 BOOST_CHECK_EQUAL( ret, true );
401 // unit_test[xx] parse_opt_vs_target_func normal case 4 (any address(ipv6)) endpoint check
402 boost::asio::ip::tcp::endpoint ep = string_to_endpoint<boost::asio::ip::tcp>( "[::]:8080" );
403 BOOST_CHECK_EQUAL( adm.get_request().vs_element.tcp_accept_endpoint, ep );
406 // parse_opt_vs_target_func error case 1 (invalid endpoint)
411 char* argv[] = { "l7vsadm_test", "-A", "-t", "10.144.169.257:22100" };
413 bool ret = adm.parse_opt_vs_target_func_wp( pos, argc, argv );
415 // unit_test[16] parse_opt_vs_target_func error case 1 (invalid endpoint) return value check
416 BOOST_CHECK_EQUAL( ret, false );
419 // parse_opt_vs_target_func error case 2 (no endpoint)
424 char* argv[] = { "l7vsadm_test", "-A", "-t" };
426 bool ret = adm.parse_opt_vs_target_func_wp( pos, argc, argv );
428 // unit_test[17] parse_opt_vs_target_func error case 2 (no endpoint) return value check
429 BOOST_CHECK_EQUAL( ret, false );
432 // ramiel_ipv6 delete
433 // // parse_opt_vs_target_func error case 3 (0.0.0.0 address)
438 // char* argv[] = { "l7vsadm_test", "-A", "-t", "0.0.0.0:8080" };
440 // bool ret = adm.parse_opt_vs_target_func_wp( pos, argc, argv );
442 // // unit_test[18] parse_opt_vs_target_func error case 3 (0.0.0.0 address) return value check
443 // BOOST_CHECK_EQUAL( ret, false );
446 // parse_opt_vs_target_func error case 4 (0 port)
451 char* argv[] = { "l7vsadm_test", "-A", "-t", "10.144.169.87:0" };
453 bool ret = adm.parse_opt_vs_target_func_wp( pos, argc, argv );
455 // unit_test[19] parse_opt_vs_target_func error case 4 (0 port) return value check
456 BOOST_CHECK_EQUAL( ret, false );
459 // parse_opt_vs_target_func error case 5 (invalid port (99999))
464 char* argv[] = { "l7vsadm_test", "-A", "-t", "10.144.169.87:99999" };
466 bool ret = adm.parse_opt_vs_target_func_wp( pos, argc, argv );
468 // unit_test[20] parse_opt_vs_target_func error case 5 (invalid port (99999)) return value check
469 BOOST_CHECK_EQUAL( ret, false );
472 // parse_opt_vs_target_func error case 6 (hostname omitted)
477 char* argv[] = { "l7vsadm_test", "-A", "-t", ":22100" };
479 bool ret = adm.parse_opt_vs_target_func_wp( pos, argc, argv );
481 // unit_test[21] parse_opt_vs_target_func error case 6 (hostname omitted) return value check
482 BOOST_CHECK_EQUAL( ret, false );
485 // parse_opt_vs_target_func error case 7 (port omitted)
490 char* argv[] = { "l7vsadm_test", "-A", "-t", "10.144.169.87:" };
492 bool ret = adm.parse_opt_vs_target_func_wp( pos, argc, argv );
494 // unit_test[22] parse_opt_vs_target_func error case 7 (port omitted) return value check
495 BOOST_CHECK_EQUAL( ret, false );
498 BOOST_MESSAGE( "----- parse_opt_vs_target_func_test end -----" );
502 void parse_opt_vs_module_func_test(){
503 BOOST_MESSAGE( "----- parse_opt_vs_module_func_test start -----" );
505 // parse_opt_vs_module_func normal case 1 (end with module option)
510 char* argv[] = { "l7vsadm_test", "-A", "-m", "cinsert", "option" };
511 l7vs::protocol_module_control::load_module_fail = false;
512 l7vs::protocol_module_stub::check_parameter_called = false;
513 l7vs::protocol_module_stub::check_parameter_fail = false;
515 bool ret = adm.parse_opt_vs_module_func_wp( pos, argc, argv );
517 // unit_test[23] parse_opt_vs_module_func normal case 1 (end with module option) return value check
518 BOOST_CHECK_EQUAL( ret, true );
519 // unit_test[24] parse_opt_vs_module_func normal case 1 (end with module option) check_parameter call check
520 BOOST_CHECK_EQUAL( l7vs::protocol_module_stub::check_parameter_called, true );
521 // unit_test[25] parse_opt_vs_module_func normal case 1 (end with module option) module name check
522 BOOST_CHECK_EQUAL( adm.get_request().vs_element.protocol_module_name, "cinsert" );
523 // unit_test[26] parse_opt_vs_module_func normal case 1 (end with module option) module arg check
524 BOOST_CHECK_EQUAL( adm.get_request().vs_element.protocol_args.front(), "option" );
527 // parse_opt_vs_module_func normal case 2 (end with next vs option)
532 char* argv[] = { "l7vsadm_test", "-A", "-m", "cinsert", "option", "-t" };
533 l7vs::protocol_module_control::load_module_fail = false;
534 l7vs::protocol_module_stub::check_parameter_called = false;
535 l7vs::protocol_module_stub::check_parameter_fail = false;
537 bool ret = adm.parse_opt_vs_module_func_wp( pos, argc, argv );
539 // unit_test[27] parse_opt_vs_module_func normal case 2 (end with next vs option) return value check
540 BOOST_CHECK_EQUAL( ret, true );
541 // unit_test[28] parse_opt_vs_module_func normal case 2 (end with next vs option) check_parameter call check
542 BOOST_CHECK_EQUAL( l7vs::protocol_module_stub::check_parameter_called, true );
543 // unit_test[29] parse_opt_vs_module_func normal case 2 (end with next vs option) module name check
544 BOOST_CHECK_EQUAL( adm.get_request().vs_element.protocol_module_name, "cinsert" );
545 // unit_test[30] parse_opt_vs_module_func normal case 2 (end with next vs option) module arg check
546 BOOST_CHECK_EQUAL( adm.get_request().vs_element.protocol_args.front(), "option" );
550 // parse_opt_vs_module_func normal case 3 (no protocol module arg)
555 char* argv[] = { "l7vsadm_test", "-A", "-m", "cinsert", "-t" };
556 l7vs::protocol_module_control::load_module_fail = false;
557 l7vs::protocol_module_stub::check_parameter_called = false;
558 l7vs::protocol_module_stub::check_parameter_fail = false;
560 bool ret = adm.parse_opt_vs_module_func_wp( pos, argc, argv );
562 // unit_test[31] parse_opt_vs_module_func normal case 3 (no protocol module arg) return value check
563 BOOST_CHECK_EQUAL( ret, true );
564 // unit_test[32] parse_opt_vs_module_func normal case 3 (no protocol module arg) check_parameter call check
565 BOOST_CHECK_EQUAL( l7vs::protocol_module_stub::check_parameter_called, true );
566 // unit_test[33] parse_opt_vs_module_func normal case 3 (no protocol module arg) module name check
567 BOOST_CHECK_EQUAL( adm.get_request().vs_element.protocol_module_name, "cinsert" );
568 // unit_test[34] parse_opt_vs_module_func normal case 3 (no protocol module arg) module arg check
569 BOOST_CHECK_EQUAL( adm.get_request().vs_element.protocol_args.size(), 0U );
573 // parse_opt_vs_module_func error case 1 (no protocol module name)
578 char* argv[] = { "l7vsadm_test", "-A", "-m" };
579 l7vs::protocol_module_control::load_module_fail = false;
580 l7vs::protocol_module_stub::check_parameter_called = false;
581 l7vs::protocol_module_stub::check_parameter_fail = false;
583 bool ret = adm.parse_opt_vs_module_func_wp( pos, argc, argv );
585 // unit_test[35] parse_opt_vs_module_func error case 1 (no protocol module name) return value check
586 BOOST_CHECK_EQUAL( ret, false );
590 // parse_opt_vs_module_func error case 2 (protocol module load failed)
595 char* argv[] = { "l7vsadm_test", "-A", "-m", "cinsert", "-t" };
596 l7vs::protocol_module_control::load_module_fail = true;
597 l7vs::protocol_module_stub::check_parameter_called = false;
598 l7vs::protocol_module_stub::check_parameter_fail = false;
600 bool ret = adm.parse_opt_vs_module_func_wp( pos, argc, argv );
602 // unit_test[36] parse_opt_vs_module_func error case 2 (protocol module load failed) return value check
603 BOOST_CHECK_EQUAL( ret, false );
607 // parse_opt_vs_module_func error case 3 (check parameter failed)
612 char* argv[] = { "l7vsadm_test", "-A", "-m", "cinsert", "-t" };
613 l7vs::protocol_module_control::load_module_fail = false;
614 l7vs::protocol_module_stub::check_parameter_called = false;
615 l7vs::protocol_module_stub::check_parameter_fail = true;
617 bool ret = adm.parse_opt_vs_module_func_wp( pos, argc, argv );
619 // unit_test[37] parse_opt_vs_module_func error case 3 (check parameter failed) return value check
620 BOOST_CHECK_EQUAL( ret, false );
621 // unit_test[38] parse_opt_vs_module_func error case 3 (check parameter failed) check_parameter call check
622 BOOST_CHECK_EQUAL( l7vs::protocol_module_stub::check_parameter_called, true );
626 // parse_opt_vs_module_func error case 4 (protomod name too long)
631 char* argv[] = { "l7vsadm_test", "-A", "-m", "protomodnameistoolong", "-t" };
632 l7vs::protocol_module_control::load_module_fail = false;
633 l7vs::protocol_module_stub::check_parameter_called = false;
634 l7vs::protocol_module_stub::check_parameter_fail = false;
636 bool ret = adm.parse_opt_vs_module_func_wp( pos, argc, argv );
638 // unit_test[39] parse_opt_vs_module_func error case 4 (protomod name too long) return value check
639 BOOST_CHECK_EQUAL( ret, false );
642 l7vs::protocol_module_control::load_module_fail = false;
643 l7vs::protocol_module_stub::check_parameter_called = false;
644 l7vs::protocol_module_stub::check_parameter_fail = false;
646 BOOST_MESSAGE( "----- parse_opt_vs_module_func_test end -----" );
650 void parse_opt_vs_scheduler_func_test(){
651 BOOST_MESSAGE( "----- parse_opt_vs_scheduler_func_test start -----" );
653 // parse_opt_vs_scheduler_func normal case 1
658 char* argv[] = { "l7vsadm_test", "-A", "-s", "rr" };
659 l7vs::schedule_module_control::load_module_fail = false;
661 bool ret = adm.parse_opt_vs_scheduler_func_wp( pos, argc, argv );
663 // unit_test[40] parse_opt_vs_scheduler_func normal case 1 return value check
664 BOOST_CHECK_EQUAL( ret, true );
665 // unit_test[41] parse_opt_vs_scheduler_func normal case 1 module name check
666 BOOST_CHECK_EQUAL( adm.get_request().vs_element.schedule_module_name, "rr" );
669 // parse_opt_vs_scheduler_func error case 1 (no schedule module name)
674 char* argv[] = { "l7vsadm_test", "-A", "-s" };
675 l7vs::schedule_module_control::load_module_fail = false;
677 bool ret = adm.parse_opt_vs_scheduler_func_wp( pos, argc, argv );
679 // unit_test[42] parse_opt_vs_scheduler_func error case 1 (no schedule module name) return value check
680 BOOST_CHECK_EQUAL( ret, false );
684 // parse_opt_vs_scheduler_func error case 2 (schedule module load failed)
689 char* argv[] = { "l7vsadm_test", "-A", "-s", "rr" };
690 l7vs::schedule_module_control::load_module_fail = true;
692 bool ret = adm.parse_opt_vs_scheduler_func_wp( pos, argc, argv );
694 // unit_test[43] parse_opt_vs_scheduler_func error case 2 (schedule module load failed) return value check
695 BOOST_CHECK_EQUAL( ret, false );
699 // parse_opt_vs_scheduler_func error case 3 (schedule module name too long)
704 char* argv[] = { "l7vsadm_test", "-A", "-s", "schedulernameistoolong" };
705 l7vs::schedule_module_control::load_module_fail = false;
707 bool ret = adm.parse_opt_vs_scheduler_func_wp( pos, argc, argv );
709 // unit_test[44] parse_opt_vs_scheduler_func error case 3 (schedule module name too long) return value check
710 BOOST_CHECK_EQUAL( ret, false );
713 l7vs::schedule_module_control::load_module_fail = false;
715 BOOST_MESSAGE( "----- parse_opt_vs_scheduler_func_test end -----" );
719 void parse_opt_vs_upper_func_test(){
720 BOOST_MESSAGE( "----- parse_opt_vs_upper_func_test start -----" );
722 // parse_opt_vs_upper_func normal case 1
727 char* argv[] = { "l7vsadm_test", "-A", "-u", "128" };
729 bool ret = adm.parse_opt_vs_upper_func_wp( pos, argc, argv );
731 // unit_test[45] parse_opt_vs_upper_func normal case 1 return value check
732 BOOST_CHECK_EQUAL( ret, true );
733 // unit_test[46] parse_opt_vs_upper_func normal case 1 sorry_maxconnection check
734 BOOST_CHECK_EQUAL( adm.get_request().vs_element.sorry_maxconnection, 128 );
737 // parse_opt_vs_upper_func normal case 2(0 clear)
742 char* argv[] = { "l7vsadm_test", "-A", "-u", "0" };
744 bool ret = adm.parse_opt_vs_upper_func_wp( pos, argc, argv );
746 // unit_test[47] parse_opt_vs_upper_func normal case 2(0 clear) return value check
747 BOOST_CHECK_EQUAL( ret, true );
748 // unit_test[48] parse_opt_vs_upper_func normal case 2(0 clear) sorry_maxconnection check
749 BOOST_CHECK_EQUAL( adm.get_request().vs_element.sorry_maxconnection, LLONG_MAX );
752 // parse_opt_vs_upper_func error case 1 (invalid maxconnection value (charactor))
757 char* argv[] = { "l7vsadm_test", "-A", "-u", "a" };
759 bool ret = adm.parse_opt_vs_upper_func_wp( pos, argc, argv );
761 // unit_test[49] parse_opt_vs_upper_func error case 1 (invalid maxconnection value (charactor)) return value check
762 BOOST_CHECK_EQUAL( ret, false );
765 // parse_opt_vs_upper_func error case 2 (invalid maxconnection value(long long over))
770 std::stringstream ss;
771 ss << (1ULL) + LLONG_MAX;
772 char* argv[] = { "l7vsadm_test", "-A", "-u", const_cast<char*>( ss.str().c_str() ) };
774 bool ret = adm.parse_opt_vs_upper_func_wp( pos, argc, argv );
776 // unit_test[50] parse_opt_vs_upper_func error case 2 (invalid maxconnection value(long long over)) return value check
777 BOOST_CHECK_EQUAL( ret, false );
780 // parse_opt_vs_upper_func error case 3 (no maxconnection value)
785 char* argv[] = { "l7vsadm_test", "-A", "-u" };
787 bool ret = adm.parse_opt_vs_upper_func_wp( pos, argc, argv );
789 // unit_test[51] parse_opt_vs_upper_func error case 3 (no maxconnection value) return value check
790 BOOST_CHECK_EQUAL( ret, false );
793 // parse_opt_vs_upper_func error case 4 (under 0)
798 char* argv[] = { "l7vsadm_test", "-A", "-u", "-1" };
800 bool ret = adm.parse_opt_vs_upper_func_wp( pos, argc, argv );
802 // unit_test[52] parse_opt_vs_upper_func error case 4 (under 0) return value check
803 BOOST_CHECK_EQUAL( ret, false );
806 // parse_opt_vs_upper_func error case 5 (over 100000)
811 char* argv[] = { "l7vsadm_test", "-A", "-u", "100001" };
813 bool ret = adm.parse_opt_vs_upper_func_wp( pos, argc, argv );
815 // unit_test[53] parse_opt_vs_upper_func error case 5 (over 100000) return value check
816 BOOST_CHECK_EQUAL( ret, false );
819 BOOST_MESSAGE( "----- parse_opt_vs_upper_func_test end -----" );
823 void parse_opt_vs_bypass_func_test(){
824 BOOST_MESSAGE( "----- parse_opt_vs_bypass_func_test start -----" );
826 // parse_opt_vs_bypass_func normal case 1
831 char* argv[] = { "l7vsadm_test", "-A", "-b", "10.144.169.87:8080" };
833 bool ret = adm.parse_opt_vs_bypass_func_wp( pos, argc, argv );
835 // unit_test[54] parse_opt_vs_bypass_func normal case 1 return value check
836 BOOST_CHECK_EQUAL( ret, true );
837 // unit_test[55] parse_opt_vs_bypass_func normal case 1 sorry_endpoint check
838 boost::asio::ip::tcp::endpoint ep = string_to_endpoint<boost::asio::ip::tcp>( "10.144.169.87:8080" );
839 BOOST_CHECK_EQUAL( adm.get_request().vs_element.sorry_endpoint, ep );
842 // parse_opt_vs_bypass_func normal case 2 (sorryserver_clear)
847 char* argv[] = { "l7vsadm_test", "-A", "-b", "0.0.0.0:0" };
849 bool ret = adm.parse_opt_vs_bypass_func_wp( pos, argc, argv );
851 // unit_test[56] parse_opt_vs_bypass_func normal case 2 (sorryserver_clear) return value check
852 BOOST_CHECK_EQUAL( ret, true );
853 // unit_test[57] parse_opt_vs_bypass_func normal case 2 (sorryserver_clear) sorry_endpoint check
854 boost::asio::ip::tcp::endpoint ep = string_to_endpoint<boost::asio::ip::tcp>( "255.255.255.255:0" );
855 BOOST_CHECK_EQUAL( adm.get_request().vs_element.sorry_endpoint, ep );
858 // parse_opt_vs_bypass_func normal case 3 (sorryserver specified in name)
863 char* argv[] = { "l7vsadm_test", "-A", "-b", "127.0.0.1:http" };
865 bool ret = adm.parse_opt_vs_bypass_func_wp( pos, argc, argv );
867 // unit_test[58] parse_opt_vs_bypass_func normal case 3 (sorryserver specified in name) return value check
868 BOOST_CHECK_EQUAL( ret, true );
869 // unit_test[59] parse_opt_vs_bypass_func normal case 3 (sorryserver specified in name) endpoint check
870 boost::asio::ip::tcp::endpoint ep = string_to_endpoint<boost::asio::ip::tcp>( "127.0.0.1:80" );
871 BOOST_CHECK_EQUAL( adm.get_request().vs_element.sorry_endpoint, ep );
875 // parse_opt_vs_bypass_func normal case 4 (ipv6)
880 char* argv[] = { "l7vsadm_test", "-A", "-b", "[2001::10]:8080" };
882 bool ret = adm.parse_opt_vs_bypass_func_wp( pos, argc, argv );
884 // unit_test[xx] parse_opt_vs_bypass_func normal case 4 (ipv6) return value check
885 BOOST_CHECK_EQUAL( ret, true );
886 // unit_test[xx] parse_opt_vs_bypass_func normal case 4 (ipv6) sorry_endpoint check
887 boost::asio::ip::tcp::endpoint ep = string_to_endpoint<boost::asio::ip::tcp>( "[2001::10]:8080" );
888 BOOST_CHECK_EQUAL( adm.get_request().vs_element.sorry_endpoint, ep );
891 // parse_opt_vs_bypass_func error case 1 (invalid endpoint)
896 char* argv[] = { "l7vsadm_test", "-A", "-b", "10.144.169.257:8080" };
898 bool ret = adm.parse_opt_vs_bypass_func_wp( pos, argc, argv );
900 // unit_test[60] parse_opt_vs_bypass_func error case 1 (invalid endpoint) return value check
901 BOOST_CHECK_EQUAL( ret, false );
904 // parse_opt_vs_bypass_func error case 2 (no endpoint)
909 char* argv[] = { "l7vsadm_test", "-A", "-b" };
911 bool ret = adm.parse_opt_vs_bypass_func_wp( pos, argc, argv );
913 // unit_test[61] parse_opt_vs_bypass_func error case 2 (no endpoint) return value check
914 BOOST_CHECK_EQUAL( ret, false );
917 // parse_opt_vs_bypass_func error case 3 (0.0.0.0 address)
922 char* argv[] = { "l7vsadm_test", "-A", "-b", "0.0.0.0:8080" };
924 bool ret = adm.parse_opt_vs_bypass_func_wp( pos, argc, argv );
926 // unit_test[62] parse_opt_vs_bypass_func error case 3 (0.0.0.0 address) return value check
927 BOOST_CHECK_EQUAL( ret, false );
930 // parse_opt_vs_bypass_func error case 4 (0 port)
935 char* argv[] = { "l7vsadm_test", "-A", "-b", "10.144.169.87:0" };
937 bool ret = adm.parse_opt_vs_bypass_func_wp( pos, argc, argv );
939 // unit_test[63] parse_opt_vs_bypass_func error case 4 (0 port) return value check
940 BOOST_CHECK_EQUAL( ret, false );
943 // parse_opt_vs_bypass_func error case 5 (invalid port (99999))
948 char* argv[] = { "l7vsadm_test", "-A", "-b", "10.144.169.87:99999" };
950 bool ret = adm.parse_opt_vs_bypass_func_wp( pos, argc, argv );
952 // unit_test[64] parse_opt_vs_bypass_func error case 5 (invalid port (99999)) return value check
953 BOOST_CHECK_EQUAL( ret, false );
956 // parse_opt_vs_bypass_func error case 6 (hostname omitted)
961 char* argv[] = { "l7vsadm_test", "-A", "-b", ":22100" };
963 bool ret = adm.parse_opt_vs_bypass_func_wp( pos, argc, argv );
965 // unit_test[65] parse_opt_vs_bypass_func error case 6 (hostname omitted) return value check
966 BOOST_CHECK_EQUAL( ret, false );
969 // parse_opt_vs_bypass_func error case 7 (port omitted)
974 char* argv[] = { "l7vsadm_test", "-A", "-b", "10.144.169.87:" };
976 bool ret = adm.parse_opt_vs_bypass_func_wp( pos, argc, argv );
978 // unit_test[66] parse_opt_vs_bypass_func error case 7 (port omitted) return value check
979 BOOST_CHECK_EQUAL( ret, false );
983 // parse_opt_vs_bypass_func error case 8 (ipv6 any address)
988 char* argv[] = { "l7vsadm_test", "-A", "-b", "[::]:8080" };
990 bool ret = adm.parse_opt_vs_bypass_func_wp( pos, argc, argv );
992 // unit_test[xx] parse_opt_vs_bypass_func error case 8 (ipv6 any address) return value check
993 BOOST_CHECK_EQUAL( ret, false );
996 BOOST_MESSAGE( "----- parse_opt_vs_bypass_func_test end -----" );
1000 void parse_opt_vs_flag_func_test(){
1001 BOOST_MESSAGE( "----- parse_opt_vs_flag_func_test start -----" );
1003 // parse_opt_vs_flag_func normal case 1 (flag on)
1008 char* argv[] = { "l7vsadm_test", "-A", "-f", "1" };
1010 bool ret = adm.parse_opt_vs_flag_func_wp( pos, argc, argv );
1012 // unit_test[67] parse_opt_vs_flag_func normal case 1 (flag on) return value check
1013 BOOST_CHECK_EQUAL( ret, true );
1014 // unit_test[68] parse_opt_vs_flag_func normal case 1 (flag on) sorry_flag check
1015 BOOST_CHECK_EQUAL( adm.get_request().vs_element.sorry_flag, 1 );
1018 // parse_opt_vs_flag_func normal case 2 (flag off)
1023 char* argv[] = { "l7vsadm_test", "-A", "-f", "0" };
1025 bool ret = adm.parse_opt_vs_flag_func_wp( pos, argc, argv );
1027 // unit_test[69] parse_opt_vs_flag_func normal case 2 (flag off) return value check
1028 BOOST_CHECK_EQUAL( ret, true );
1029 // unit_test[70] parse_opt_vs_flag_func normal case 2 (flag off) sorry_flag check
1030 BOOST_CHECK_EQUAL( adm.get_request().vs_element.sorry_flag, INT_MAX );
1033 // parse_opt_vs_flag_func error case 1 (no flag)
1038 char* argv[] = { "l7vsadm_test", "-A", "-f" };
1040 bool ret = adm.parse_opt_vs_bypass_func_wp( pos, argc, argv );
1042 // unit_test[71] parse_opt_vs_flag_func error case 1 (no flag) return value check
1043 BOOST_CHECK_EQUAL( ret, false );
1046 // parse_opt_vs_flag_func error case 2 (1 nor 0)
1051 char* argv[] = { "l7vsadm_test", "-A", "-f", "2" };
1053 bool ret = adm.parse_opt_vs_bypass_func_wp( pos, argc, argv );
1055 // unit_test[72] parse_opt_vs_flag_func error case 2 (1 nor 0) return value check
1056 BOOST_CHECK_EQUAL( ret, false );
1059 // parse_opt_vs_flag_func error case 3 (int over)
1064 std::stringstream ss;
1065 ss << (1ULL) + INT_MAX;
1066 char* argv[] = { "l7vsadm_test", "-A", "-f", const_cast<char*>( ss.str().c_str() ) };
1068 bool ret = adm.parse_opt_vs_bypass_func_wp( pos, argc, argv );
1070 // unit_test[73] parse_opt_vs_flag_func error case 3 (int over) return value check
1071 BOOST_CHECK_EQUAL( ret, false );
1074 BOOST_MESSAGE( "----- parse_opt_vs_flag_func_test end -----" );
1078 void parse_opt_vs_qosup_func_test(){
1079 BOOST_MESSAGE( "----- parse_opt_vs_qosup_func_test start -----" );
1081 // parse_opt_vs_qosup_func normal case 1 (no unit postfix)
1086 char* argv[] = { "l7vsadm_test", "-A", "-Q", "128" };
1088 bool ret = adm.parse_opt_vs_qosup_func_wp( pos, argc, argv );
1090 // unit_test[74] parse_opt_vs_qosup_func normal case 1 (no unit postfix) return value check
1091 BOOST_CHECK_EQUAL( ret, true );
1092 // unit_test[75] parse_opt_vs_qosup_func normal case 1 (no unit postfix) qos_upstream check
1093 BOOST_CHECK_EQUAL( adm.get_request().vs_element.qos_upstream, ( 128ULL / 8 ) );
1096 // parse_opt_vs_qosup_func normal case 2 (unit postfix 'G')
1101 char* argv[] = { "l7vsadm_test", "-A", "-Q", "128G" };
1103 bool ret = adm.parse_opt_vs_qosup_func_wp( pos, argc, argv );
1105 // unit_test[76] parse_opt_vs_qosup_func normal case 2 (unit postfix 'G') return value check
1106 BOOST_CHECK_EQUAL( ret, true );
1107 // unit_test[77] parse_opt_vs_qosup_func normal case 2 (unit postfix 'G') qos_upstream check
1108 BOOST_CHECK_EQUAL( adm.get_request().vs_element.qos_upstream, ( 128000000000ULL / 8 ) );
1111 // parse_opt_vs_qosup_func normal case 3 (unit postfix 'g')
1116 char* argv[] = { "l7vsadm_test", "-A", "-Q", "128g" };
1118 bool ret = adm.parse_opt_vs_qosup_func_wp( pos, argc, argv );
1120 // unit_test[78] parse_opt_vs_qosup_func normal case 3 (unit postfix 'g') return value check
1121 BOOST_CHECK_EQUAL( ret, true );
1122 // unit_test[79] parse_opt_vs_qosup_func normal case 3 (unit postfix 'g') qos_upstream check
1123 BOOST_CHECK_EQUAL( adm.get_request().vs_element.qos_upstream, ( 128000000000ULL / 8 ) );
1126 // parse_opt_vs_qosup_func normal case 4 (unit postfix 'M')
1131 char* argv[] = { "l7vsadm_test", "-A", "-Q", "128M" };
1133 bool ret = adm.parse_opt_vs_qosup_func_wp( pos, argc, argv );
1135 // unit_test[80] parse_opt_vs_qosup_func normal case 4 (unit postfix 'M') return value check
1136 BOOST_CHECK_EQUAL( ret, true );
1137 // unit_test[81] parse_opt_vs_qosup_func normal case 4 (unit postfix 'M') qos_upstream check
1138 BOOST_CHECK_EQUAL( adm.get_request().vs_element.qos_upstream, ( 128000000ULL / 8 ) );
1141 // parse_opt_vs_qosup_func normal case 5 (unit postfix 'm')
1146 char* argv[] = { "l7vsadm_test", "-A", "-Q", "128m" };
1148 bool ret = adm.parse_opt_vs_qosup_func_wp( pos, argc, argv );
1150 // unit_test[82] parse_opt_vs_qosup_func normal case 5 (unit postfix 'm') return value check
1151 BOOST_CHECK_EQUAL( ret, true );
1152 // unit_test[83] parse_opt_vs_qosup_func normal case 5 (unit postfix 'm') qos_upstream check
1153 BOOST_CHECK_EQUAL( adm.get_request().vs_element.qos_upstream, ( 128000000ULL / 8 ) );
1156 // parse_opt_vs_qosup_func normal case 6 (unit postfix 'K')
1161 char* argv[] = { "l7vsadm_test", "-A", "-Q", "128K" };
1163 bool ret = adm.parse_opt_vs_qosup_func_wp( pos, argc, argv );
1165 // unit_test[84] parse_opt_vs_qosup_func normal case 6 (unit postfix 'K') return value check
1166 BOOST_CHECK_EQUAL( ret, true );
1167 // unit_test[85] parse_opt_vs_qosup_func normal case 6 (unit postfix 'K') qos_upstream check
1168 BOOST_CHECK_EQUAL( adm.get_request().vs_element.qos_upstream, ( 128000ULL / 8 ) );
1171 // parse_opt_vs_qosup_func normal case 7 (unit postfix 'k')
1176 char* argv[] = { "l7vsadm_test", "-A", "-Q", "128k" };
1178 bool ret = adm.parse_opt_vs_qosup_func_wp( pos, argc, argv );
1180 // unit_test[86] parse_opt_vs_qosup_func normal case 7 (unit postfix 'k') return value check
1181 BOOST_CHECK_EQUAL( ret, true );
1182 // unit_test[87] parse_opt_vs_qosup_func normal case 7 (unit postfix 'k') qos_upstream check
1183 BOOST_CHECK_EQUAL( adm.get_request().vs_element.qos_upstream, ( 128000ULL / 8 ) );
1186 // parse_opt_vs_qosup_func error case 1 (invalid qos_upstream value (charactor))
1191 char* argv[] = { "l7vsadm_test", "-A", "-Q", "a" };
1193 bool ret = adm.parse_opt_vs_qosup_func_wp( pos, argc, argv );
1195 // unit_test[88] parse_opt_vs_qosup_func error case 1 (invalid qos_upstream value (charactor)) return value check
1196 BOOST_CHECK_EQUAL( ret, false );
1199 // parse_opt_vs_qosup_func error case 2 (invalid qos_upstream value(unsigned long long over))
1204 std::stringstream ss;
1205 ss << "18446744073709551616"; // ULLONG_MAX is 18446744073709551615
1206 char* argv[] = { "l7vsadm_test", "-A", "-Q", const_cast<char*>( ss.str().c_str() ) };
1208 bool ret = adm.parse_opt_vs_qosup_func_wp( pos, argc, argv );
1210 // unit_test[89] parse_opt_vs_qosup_func error case 2 (invalid qos_upstream value(unsigned long long over)) return value check
1211 BOOST_CHECK_EQUAL( ret, false );
1214 // parse_opt_vs_qosup_func error case 3 (invalid qos_upstream value(unsigned long long over in postfix 'G'))
1219 std::stringstream ss;
1220 ss << "17179869184G"; // ULLONG_MAX / 1024 / 1024 / 1024
1221 char* argv[] = { "l7vsadm_test", "-A", "-Q", const_cast<char*>( ss.str().c_str() ) };
1223 bool ret = adm.parse_opt_vs_qosup_func_wp( pos, argc, argv );
1225 // unit_test[90] parse_opt_vs_qosup_func error case 3 (invalid qos_upstream value(unsigned long long over in postfix 'G')) return value check
1226 BOOST_CHECK_EQUAL( ret, false );
1229 // parse_opt_vs_qosup_func error case 4 (invalid qos_upstream value(unsigned long long over in postfix 'M'))
1234 std::stringstream ss;
1235 ss << "17592186044416M"; // ULLONG_MAX / 1024 / 1024
1236 char* argv[] = { "l7vsadm_test", "-A", "-Q", const_cast<char*>( ss.str().c_str() ) };
1238 bool ret = adm.parse_opt_vs_qosup_func_wp( pos, argc, argv );
1240 // unit_test[91] parse_opt_vs_qosup_func error case 4 (invalid qos_upstream value(unsigned long long over in postfix 'M')) return value check
1241 BOOST_CHECK_EQUAL( ret, false );
1244 // parse_opt_vs_qosup_func error case 5 (invalid qos_upstream value(unsigned long long over in postfix 'K'))
1249 std::stringstream ss;
1250 ss << "18014398509481984K"; // ULLONG_MAX / 1024
1251 char* argv[] = { "l7vsadm_test", "-A", "-Q", const_cast<char*>( ss.str().c_str() ) };
1253 bool ret = adm.parse_opt_vs_qosup_func_wp( pos, argc, argv );
1255 // unit_test[92] parse_opt_vs_qosup_func error case 5 (invalid qos_upstream value(unsigned long long over in postfix 'K')) return value check
1256 BOOST_CHECK_EQUAL( ret, false );
1259 // parse_opt_vs_qosup_func error case 6 (no qos_upstream value)
1264 char* argv[] = { "l7vsadm_test", "-A", "-Q" };
1266 bool ret = adm.parse_opt_vs_qosup_func_wp( pos, argc, argv );
1268 // unit_test[93] parse_opt_vs_qosup_func error case 6 (no qos_upstream value) return value check
1269 BOOST_CHECK_EQUAL( ret, false );
1272 BOOST_MESSAGE( "----- parse_opt_vs_qosup_func_test end -----" );
1276 void parse_opt_vs_qosdown_func_test(){
1277 BOOST_MESSAGE( "----- parse_opt_vs_qosdown_func_test start -----" );
1279 // parse_opt_vs_qosdown_func normal case 1 (no unit postfix)
1284 char* argv[] = { "l7vsadm_test", "-A", "-Q", "128" };
1286 bool ret = adm.parse_opt_vs_qosdown_func_wp( pos, argc, argv );
1288 // unit_test[94] parse_opt_vs_qosdown_func normal case 1 (no unit postfix) return value check
1289 BOOST_CHECK_EQUAL( ret, true );
1290 // unit_test[95] parse_opt_vs_qosdown_func normal case 1 (no unit postfix) qos_downstream check
1291 BOOST_CHECK_EQUAL( adm.get_request().vs_element.qos_downstream, ( 128ULL / 8 ) );
1294 // parse_opt_vs_qosdown_func normal case 2 (unit postfix 'G')
1299 char* argv[] = { "l7vsadm_test", "-A", "-Q", "128G" };
1301 bool ret = adm.parse_opt_vs_qosdown_func_wp( pos, argc, argv );
1303 // unit_test[96] parse_opt_vs_qosdown_func normal case 2 (unit postfix 'G') return value check
1304 BOOST_CHECK_EQUAL( ret, true );
1305 // unit_test[97] parse_opt_vs_qosdown_func normal case 2 (unit postfix 'G') qos_downstream check
1306 BOOST_CHECK_EQUAL( adm.get_request().vs_element.qos_downstream, ( 128000000000ULL / 8 ) );
1309 // parse_opt_vs_qosdown_func normal case 3 (unit postfix 'g')
1314 char* argv[] = { "l7vsadm_test", "-A", "-Q", "128g" };
1316 bool ret = adm.parse_opt_vs_qosdown_func_wp( pos, argc, argv );
1318 // unit_test[98] parse_opt_vs_qosdown_func normal case 3 (unit postfix 'g') return value check
1319 BOOST_CHECK_EQUAL( ret, true );
1320 // unit_test[99] parse_opt_vs_qosdown_func normal case 3 (unit postfix 'g') qos_downstream check
1321 BOOST_CHECK_EQUAL( adm.get_request().vs_element.qos_downstream, ( 128000000000ULL / 8 ) );
1324 // parse_opt_vs_qosdown_func normal case 4 (unit postfix 'M')
1329 char* argv[] = { "l7vsadm_test", "-A", "-Q", "128M" };
1331 bool ret = adm.parse_opt_vs_qosdown_func_wp( pos, argc, argv );
1333 // unit_test[100] parse_opt_vs_qosdown_func normal case 4 (unit postfix 'M') return value check
1334 BOOST_CHECK_EQUAL( ret, true );
1335 // unit_test[101] parse_opt_vs_qosdown_func normal case 4 (unit postfix 'M') qos_downstream check
1336 BOOST_CHECK_EQUAL( adm.get_request().vs_element.qos_downstream, ( 128000000ULL / 8 ) );
1339 // parse_opt_vs_qosdown_func normal case 5 (unit postfix 'm')
1344 char* argv[] = { "l7vsadm_test", "-A", "-Q", "128m" };
1346 bool ret = adm.parse_opt_vs_qosdown_func_wp( pos, argc, argv );
1348 // unit_test[102] parse_opt_vs_qosdown_func normal case 5 (unit postfix 'm') return value check
1349 BOOST_CHECK_EQUAL( ret, true );
1350 // unit_test[103] parse_opt_vs_qosdown_func normal case 5 (unit postfix 'm') qos_downstream check
1351 BOOST_CHECK_EQUAL( adm.get_request().vs_element.qos_downstream, ( 128000000ULL / 8 ) );
1354 // parse_opt_vs_qosdown_func normal case 6 (unit postfix 'K')
1359 char* argv[] = { "l7vsadm_test", "-A", "-Q", "128K" };
1361 bool ret = adm.parse_opt_vs_qosdown_func_wp( pos, argc, argv );
1363 // unit_test[104] parse_opt_vs_qosdown_func normal case 6 (unit postfix 'K') return value check
1364 BOOST_CHECK_EQUAL( ret, true );
1365 // unit_test[105] parse_opt_vs_qosdown_func normal case 6 (unit postfix 'K') qos_downstream check
1366 BOOST_CHECK_EQUAL( adm.get_request().vs_element.qos_downstream, ( 128000ULL / 8 ) );
1369 // parse_opt_vs_qosdown_func normal case 7 (unit postfix 'k')
1374 char* argv[] = { "l7vsadm_test", "-A", "-Q", "128k" };
1376 bool ret = adm.parse_opt_vs_qosdown_func_wp( pos, argc, argv );
1378 // unit_test[106] parse_opt_vs_qosdown_func normal case 7 (unit postfix 'k') return value check
1379 BOOST_CHECK_EQUAL( ret, true );
1380 // unit_test[107] parse_opt_vs_qosdown_func normal case 7 (unit postfix 'k') qos_downstream check
1381 BOOST_CHECK_EQUAL( adm.get_request().vs_element.qos_downstream, ( 128000ULL / 8 ) );
1384 // parse_opt_vs_qosdown_func error case 1 (invalid qos_downstream value (charactor))
1389 char* argv[] = { "l7vsadm_test", "-A", "-Q", "a" };
1391 bool ret = adm.parse_opt_vs_qosdown_func_wp( pos, argc, argv );
1393 // unit_test[108] parse_opt_vs_qosdown_func error case 1 (invalid qos_upstream value (charactor)) return value check
1394 BOOST_CHECK_EQUAL( ret, false );
1397 // parse_opt_vs_qosdown_func error case 2 (invalid qos_downstream value(unsigned long long over))
1402 std::stringstream ss;
1403 ss << "18446744073709551616"; // ULLONG_MAX is 18446744073709551615
1404 char* argv[] = { "l7vsadm_test", "-A", "-Q", const_cast<char*>( ss.str().c_str() ) };
1406 bool ret = adm.parse_opt_vs_qosdown_func_wp( pos, argc, argv );
1408 // unit_test[109] parse_opt_vs_qosdown_func error case 2 (invalid qos_downstream value(unsigned long long over)) return value check
1409 BOOST_CHECK_EQUAL( ret, false );
1412 // parse_opt_vs_qosdown_func error case 3 (invalid qos_downstream value(unsigned long long over in postfix 'G'))
1417 std::stringstream ss;
1418 ss << "17179869184G"; // ULLONG_MAX / 1024 / 1024 / 1024
1419 char* argv[] = { "l7vsadm_test", "-A", "-Q", const_cast<char*>( ss.str().c_str() ) };
1421 bool ret = adm.parse_opt_vs_qosdown_func_wp( pos, argc, argv );
1423 // unit_test[110] parse_opt_vs_qosdown_func error case 3 (invalid qos_downstream value(unsigned long long over in postfix 'G')) return value check
1424 BOOST_CHECK_EQUAL( ret, false );
1427 // parse_opt_vs_qosdown_func error case 4 (invalid qos_downstream value(unsigned long long over in postfix 'M'))
1432 std::stringstream ss;
1433 ss << "17592186044416M"; // ULLONG_MAX / 1024 / 1024
1434 char* argv[] = { "l7vsadm_test", "-A", "-Q", const_cast<char*>( ss.str().c_str() ) };
1436 bool ret = adm.parse_opt_vs_qosdown_func_wp( pos, argc, argv );
1438 // unit_test[111] parse_opt_vs_qosdown_func error case 4 (invalid qos_downstream value(unsigned long long over in postfix 'M')) return value check
1439 BOOST_CHECK_EQUAL( ret, false );
1442 // parse_opt_vs_qosdown_func error case 5 (invalid qos_downstream value(unsigned long long over in postfix 'K'))
1447 std::stringstream ss;
1448 ss << "18014398509481984K"; // ULLONG_MAX / 1024
1449 char* argv[] = { "l7vsadm_test", "-A", "-Q", const_cast<char*>( ss.str().c_str() ) };
1451 bool ret = adm.parse_opt_vs_qosdown_func_wp( pos, argc, argv );
1453 // unit_test[112] parse_opt_vs_qosdown_func error case 5 (invalid qos_downstream value(unsigned long long over in postfix 'K')) return value check
1454 BOOST_CHECK_EQUAL( ret, false );
1457 // parse_opt_vs_qosdown_func error case 6 (no qos_upstream value)
1462 char* argv[] = { "l7vsadm_test", "-A", "-Q" };
1464 bool ret = adm.parse_opt_vs_qosdown_func_wp( pos, argc, argv );
1466 // unit_test[113] parse_opt_vs_qosdown_func error case 6 (no qos_downstream value) return value check
1467 BOOST_CHECK_EQUAL( ret, false );
1470 BOOST_MESSAGE( "----- parse_opt_vs_qosdown_func_test end -----" );
1474 void parse_opt_vs_udp_func_test(){
1475 BOOST_MESSAGE( "----- parse_opt_vs_udp_func_test start -----" );
1477 // parse_opt_vs_udp_func normal case 1
1482 char* argv[] = { "l7vsadm_test", "-A", "-p" };
1484 bool ret = adm.parse_opt_vs_udp_func_wp( pos, argc, argv );
1486 // unit_test[114] parse_opt_vs_udp_func normal case 1 return value check
1487 BOOST_CHECK_EQUAL( ret, true );
1488 // unit_test[115] parse_opt_vs_udp_func normal case 1 udp_mode check
1489 BOOST_CHECK_EQUAL( adm.get_request().vs_element.udpmode, true );
1492 // parse_opt_vs_udp_func normal case 2 (already set tcp_endpoint)
1497 char* argv[] = { "l7vsadm_test", "-A", "-p" };
1499 adm.get_request().vs_element.tcp_accept_endpoint = string_to_endpoint<boost::asio::ip::tcp>( "10.144.169.87:22100" );
1500 adm.get_request().vs_element.realserver_vector.push_back( l7vs::realserver_element() );
1501 adm.get_request().vs_element.realserver_vector.front().tcp_endpoint = string_to_endpoint<boost::asio::ip::tcp>( "10.144.169.86:80" );
1503 bool ret = adm.parse_opt_vs_udp_func_wp( pos, argc, argv );
1505 // unit_test[116] parse_opt_vs_udp_func normal case 2 (already set tcp_endpoint) return value check
1506 BOOST_CHECK_EQUAL( ret, true );
1507 // unit_test[117] parse_opt_vs_udp_func normal case 2 (already set tcp_endpoint) udp_mode check
1508 BOOST_CHECK_EQUAL( adm.get_request().vs_element.udpmode, true );
1510 // unit_test[118] parse_opt_vs_udp_func normal case 2 (already set tcp_endpoint) tcp_accept_endpoint check
1511 boost::asio::ip::tcp::endpoint zeropoint;
1512 BOOST_CHECK_EQUAL( adm.get_request().vs_element.tcp_accept_endpoint, zeropoint );
1514 // unit_test[119] parse_opt_vs_udp_func normal case 2 (already set tcp_endpoint) udp_recv_endpoint check
1515 boost::asio::ip::udp::endpoint udp_recv_ep = string_to_endpoint<boost::asio::ip::udp>( "10.144.169.87:22100" );
1516 BOOST_CHECK_EQUAL( adm.get_request().vs_element.udp_recv_endpoint, udp_recv_ep );
1518 // unit_test[120] parse_opt_vs_udp_func normal case 2 (already set tcp_endpoint) realserver tcp_endpoint check
1519 BOOST_CHECK_EQUAL( adm.get_request().vs_element.realserver_vector.front().tcp_endpoint, zeropoint );
1521 // unit_test[121] parse_opt_vs_udp_func normal case 2 (already set tcp_endpoint) realserver udp_endpoint check
1522 boost::asio::ip::udp::endpoint rs_udp_ep = string_to_endpoint<boost::asio::ip::udp>( "10.144.169.86:80" );
1523 BOOST_CHECK_EQUAL( adm.get_request().vs_element.realserver_vector.front().udp_endpoint, rs_udp_ep );
1527 BOOST_MESSAGE( "----- parse_opt_vs_udp_func_test end -----" );
1531 void parse_opt_vs_ssl_file_func_test(){
1532 BOOST_MESSAGE( "----- parse_opt_vs_ssl_file_func_test start -----" );
1534 // parse_opt_vs_ssl_file_func normal case 1
1539 char* argv[] = { "l7vsadm_test", "-A", "-z", "./sslfile.cf" };
1541 bool ret = adm.parse_opt_vs_ssl_file_func_wp( pos, argc, argv );
1543 // unit_test[xx] parse_opt_vs_ssl_file_func normal case 1 return value check
1544 BOOST_CHECK_EQUAL( ret, true );
1545 // unit_test[xx] parse_opt_vs_ssl_file_func normal case 1 filename check
1546 BOOST_CHECK_EQUAL( adm.get_request().vs_element.ssl_file_name, "./sslfile.cf" );
1549 // pser_opt_vs_ssl_file_func error case 1 (filename not specified)
1554 char* argv[] = { "l7vsadm_test", "-A", "-z"};
1556 bool ret = adm.parse_opt_vs_ssl_file_func_wp( pos, argc, argv );
1558 // unit_test[xx] parse_opt_vs_ssl_file_func error case 1 return value check
1559 BOOST_CHECK_EQUAL( ret, false );
1562 // pser_opt_vs_ssl_file_func error case 2 (filename too long)
1564 std::string filename;
1565 filename.resize( L7VS_FILENAME_LEN + 1, 'a' );
1570 char* argv[] = { "l7vsadm_test", "-A", "-z", const_cast< char* >( filename.c_str() ) };
1572 bool ret = adm.parse_opt_vs_ssl_file_func_wp( pos, argc, argv );
1574 // unit_test[xx] parse_opt_vs_ssl_file_func error case 2 return value check
1575 BOOST_CHECK_EQUAL( ret, false );
1578 // pser_opt_vs_ssl_file_func error case 3 (file cannnot open)
1583 char* argv[] = { "l7vsadm_test", "-A", "-z", "./test.dat"};
1585 bool ret = adm.parse_opt_vs_ssl_file_func_wp( pos, argc, argv );
1587 // unit_test[xx] parse_opt_vs_ssl_file_func error case 3 return value check
1588 BOOST_CHECK_EQUAL( ret, false );
1591 BOOST_MESSAGE( "----- parse_opt_vs_ssl_file_func_test end -----" );
1595 void parse_opt_vs_access_log_func_test(){
1596 BOOST_MESSAGE( "----- parse_opt_vs_access_log_func_test start -----" );
1598 // parse_opt_vs_access_log_func normal case 1
1603 char* argv[] = { "l7vsadm_test", "-A", "-L", "1" };
1605 bool ret = adm.parse_opt_vs_access_log_func_wp( pos, argc, argv );
1607 // unit_test[xx] parse_opt_vs_access_log_func normal case 1 return value check
1608 BOOST_CHECK_EQUAL( ret, true );
1609 // unit_test[xx] parse_opt_vs_access_log_func normal case 1 filename check
1610 BOOST_CHECK_EQUAL( adm.get_request().vs_element.access_log_flag, 1 );
1613 // pser_opt_vs_access_log_func error case 1 (access_log_flag not specified)
1618 char* argv[] = { "l7vsadm_test", "-A", "-L"};
1620 bool ret = adm.parse_opt_vs_access_log_func_wp( pos, argc, argv );
1622 // unit_test[xx] parse_opt_vs_access_log_func error case 1 return value check
1623 BOOST_CHECK_EQUAL( ret, false );
1626 // pser_opt_vs_access_log_func error case 2 (invalid range access log flag value)
1631 char* argv[] = { "l7vsadm_test", "-A", "-z", "2"};
1633 bool ret = adm.parse_opt_vs_access_log_func_wp( pos, argc, argv );
1635 // unit_test[xx] parse_opt_vs_access_log_func error case 2 return value check
1636 BOOST_CHECK_EQUAL( ret, false );
1639 // pser_opt_vs_access_log_func error case 3 (invalied charactor access log flag value)
1644 char* argv[] = { "l7vsadm_test", "-A", "-z", "a"};
1646 bool ret = adm.parse_opt_vs_access_log_func_wp( pos, argc, argv );
1648 // unit_test[xx] parse_opt_vs_access_log_func error case 3 return value check
1649 BOOST_CHECK_EQUAL( ret, false );
1652 BOOST_MESSAGE( "----- parse_opt_vs_access_log_func_test end -----" );
1656 void parse_opt_vs_access_log_logrotate_func_test(){
1657 BOOST_MESSAGE( "----- parse_opt_vs_access_log_logrotate_func_test start -----" );
1659 // parse_opt_vs_access_log_logrotate_func normal case 1 (end with access log rotate option)
1664 char* argv[] = { "l7vsadm_test", "-A", "-a", "/var/log/l7vs/access.log", "--option", "zzz" };
1665 l7vs::logger_access_manager::access_log_logrotate_parameter_check_called = false;
1666 l7vs::logger_access_manager::access_log_logrotate_parameter_check_fail = false;
1668 bool ret = adm.parse_opt_vs_access_log_logrotate_func_wp( pos, argc, argv );
1670 // unit_test[xx] parse_opt_vs_access_log_logrotate_func normal case 1 return value check
1671 BOOST_CHECK_EQUAL( ret, true );
1672 // unit_test[xx] parse_opt_vs_access_log_logrotate_func normal case 1 check_parameter call check
1673 BOOST_CHECK_EQUAL( l7vs::logger_access_manager::access_log_logrotate_parameter_check_called, true );
1674 // unit_test[xx] parse_opt_vs_access_log_logrotate_func normal case 1 access log file name check
1675 BOOST_CHECK_EQUAL( adm.get_request().vs_element.access_log_file_name, "/var/log/l7vs/access.log" );
1676 // unit_test[xx] parse_opt_vs_access_log_logrotate_func normal case 1 rotate argument check
1677 std::map< std::string, std::string >::iterator it = adm.get_request().vs_element.access_log_rotate_arguments.find("--option");
1678 BOOST_CHECK( it != adm.get_request().vs_element.access_log_rotate_arguments.end() );
1679 BOOST_CHECK( it->second == "zzz" );
1680 // unit_test[xx] parse_opt_vs_access_log_logrotate_func normal case 1 rotate argument atring check
1681 BOOST_CHECK_EQUAL( adm.get_request().vs_element.access_log_rotate_key_info, "--option zzz" );
1685 // parse_opt_vs_access_log_logrotate_func normal case 2 (end with next vs option)
1690 char* argv[] = { "l7vsadm_test", "-A", "-a", "/var/log/l7vs/access.log", "--option", "zzz", "-t" };
1691 l7vs::logger_access_manager::access_log_logrotate_parameter_check_called = false;
1692 l7vs::logger_access_manager::access_log_logrotate_parameter_check_fail = false;
1694 bool ret = adm.parse_opt_vs_access_log_logrotate_func_wp( pos, argc, argv );
1696 // unit_test[xx] parse_opt_vs_access_log_logrotate_func normal case 2 return value check
1697 BOOST_CHECK_EQUAL( ret, true );
1698 // unit_test[xx] parse_opt_vs_access_log_logrotate_func normal case 2 check_parameter call check
1699 BOOST_CHECK_EQUAL( l7vs::logger_access_manager::access_log_logrotate_parameter_check_called, true );
1700 // unit_test[xx] parse_opt_vs_access_log_logrotate_func normal case 2 access log file name check
1701 BOOST_CHECK_EQUAL( adm.get_request().vs_element.access_log_file_name, "/var/log/l7vs/access.log" );
1702 // unit_test[xx] parse_opt_vs_access_log_logrotate_func normal case 2 rotate argument check
1703 std::map< std::string, std::string >::iterator it = adm.get_request().vs_element.access_log_rotate_arguments.find("--option");
1704 BOOST_CHECK( it != adm.get_request().vs_element.access_log_rotate_arguments.end() );
1705 BOOST_CHECK( it->second == "zzz" );
1706 // unit_test[xx] parse_opt_vs_access_log_logrotate_func normal case 2 rotate argument atring check
1707 BOOST_CHECK_EQUAL( adm.get_request().vs_element.access_log_rotate_key_info, "--option zzz" );
1710 // parse_opt_vs_access_log_logrotate_func normal case 3 (no rotate arg)
1715 char* argv[] = { "l7vsadm_test", "-A", "-a", "/var/log/l7vs/access.log", "-t" };
1716 l7vs::logger_access_manager::access_log_logrotate_parameter_check_called = false;
1717 l7vs::logger_access_manager::access_log_logrotate_parameter_check_fail = false;
1719 bool ret = adm.parse_opt_vs_access_log_logrotate_func_wp( pos, argc, argv );
1721 // unit_test[xx] parse_opt_vs_access_log_logrotate_func normal case 3 return value check
1722 BOOST_CHECK_EQUAL( ret, true );
1723 // unit_test[xx] parse_opt_vs_access_log_logrotate_func normal case 3 check_parameter call check
1724 BOOST_CHECK_EQUAL( l7vs::logger_access_manager::access_log_logrotate_parameter_check_called, false );
1725 // unit_test[xx] parse_opt_vs_access_log_logrotate_func normal case 3 access log file name check
1726 BOOST_CHECK_EQUAL( adm.get_request().vs_element.access_log_file_name, "/var/log/l7vs/access.log" );
1727 // unit_test[xx] parse_opt_vs_access_log_logrotate_func normal case 3 rotate argument atring check
1728 BOOST_CHECK_EQUAL( adm.get_request().vs_element.access_log_rotate_key_info, "" );
1731 // parse_opt_access_log_logrotate_func error case 1 (no access_log_file name)
1736 char* argv[] = { "l7vsadm_test", "-A", "-a" };
1737 l7vs::logger_access_manager::access_log_logrotate_parameter_check_called = false;
1738 l7vs::logger_access_manager::access_log_logrotate_parameter_check_fail = false;
1740 bool ret = adm.parse_opt_vs_access_log_logrotate_func_wp( pos, argc, argv );
1742 // unit_test[xx] parse_opt_vs_access_log_logrotate_func error case 1 return value check
1743 BOOST_CHECK_EQUAL( ret, false );
1747 // parse_opt_access_log_logrotate_func error case 2 (access_log_file name too long)
1749 std::string filename;
1750 filename.resize( L7VS_FILENAME_LEN, 'a');
1751 filename = "/" + filename;
1756 char* argv[] = { "l7vsadm_test", "-A", "-a", const_cast< char* >( filename.c_str() ) };
1757 l7vs::logger_access_manager::access_log_logrotate_parameter_check_called = false;
1758 l7vs::logger_access_manager::access_log_logrotate_parameter_check_fail = false;
1760 bool ret = adm.parse_opt_vs_access_log_logrotate_func_wp( pos, argc, argv );
1762 // unit_test[xx] parse_opt_vs_access_log_logrotate_func error case 2 return value check
1763 BOOST_CHECK_EQUAL( ret, false );
1766 // parse_opt_access_log_logrotate_func error case 3 (access_log_file name not fullpath)
1771 char* argv[] = { "l7vsadm_test", "-A", "-a", "access.log" };
1772 l7vs::logger_access_manager::access_log_logrotate_parameter_check_called = false;
1773 l7vs::logger_access_manager::access_log_logrotate_parameter_check_fail = false;
1775 bool ret = adm.parse_opt_vs_access_log_logrotate_func_wp( pos, argc, argv );
1777 // unit_test[xx] parse_opt_vs_access_log_logrotate_func error case 3 return value check
1778 BOOST_CHECK_EQUAL( ret, false );
1781 // parse_opt_access_log_logrotate_func error case 4 (rotate argument check error)
1786 char* argv[] = { "l7vsadm_test", "-A", "-a", "/var/log/l7vs/access.log", "--option", "zzz" };
1787 l7vs::logger_access_manager::access_log_logrotate_parameter_check_called = false;
1788 l7vs::logger_access_manager::access_log_logrotate_parameter_check_fail = true;
1790 bool ret = adm.parse_opt_vs_access_log_logrotate_func_wp( pos, argc, argv );
1792 // unit_test[xx] parse_opt_vs_access_log_logrotate_func error case 4 return value check
1793 BOOST_CHECK_EQUAL( ret, false );
1796 // parse_opt_access_log_logrotate_func error case 5 (rotate argument is not pair)
1801 char* argv[] = { "l7vsadm_test", "-A", "-a", "/var/log/l7vs/access.log", "--option" };
1802 l7vs::logger_access_manager::access_log_logrotate_parameter_check_called = false;
1803 l7vs::logger_access_manager::access_log_logrotate_parameter_check_fail = false;
1805 bool ret = adm.parse_opt_vs_access_log_logrotate_func_wp( pos, argc, argv );
1807 // unit_test[xx] parse_opt_vs_access_log_logrotate_func error case 5 return value check
1808 BOOST_CHECK_EQUAL( ret, false );
1811 // parse_opt_access_log_logrotate_func error case 6 (rotate argument is duplicated)
1816 char* argv[] = { "l7vsadm_test", "-A", "-a", "/var/log/l7vs/access.log", "--option", "zzz", "--option", "xxx" };
1817 l7vs::logger_access_manager::access_log_logrotate_parameter_check_called = false;
1818 l7vs::logger_access_manager::access_log_logrotate_parameter_check_fail = false;
1820 bool ret = adm.parse_opt_vs_access_log_logrotate_func_wp( pos, argc, argv );
1822 // unit_test[xx] parse_opt_vs_access_log_logrotate_func error case 6 return value check
1823 BOOST_CHECK_EQUAL( ret, false );
1826 BOOST_MESSAGE( "----- parse_opt_vs_access_log_logrotate_func_test end -----" );
1830 void parse_opt_vs_socket_func_test(){
1831 BOOST_MESSAGE( "----- parse_opt_vs_socket_func_test start -----" );
1833 // parse_opt_vs_socket_func normal case 1
1838 char* argv[] = { "l7vsadm_test", "-A", "-O", "deferaccept,nodelay,cork,quickackoff" };
1840 bool ret = adm.parse_opt_vs_socket_func_wp( pos, argc, argv );
1842 // unit_test[xx] parse_opt_vs_socket_func normal case 1 return value check
1843 BOOST_CHECK_EQUAL( ret, true );
1844 // unit_test[xx] parse_opt_vs_socket_func normal case 1 option check
1845 BOOST_CHECK_EQUAL( adm.get_request().vs_element.socket_option_tcp_defer_accept, 1 );
1846 BOOST_CHECK_EQUAL( adm.get_request().vs_element.socket_option_tcp_nodelay, 1 );
1847 BOOST_CHECK_EQUAL( adm.get_request().vs_element.socket_option_tcp_cork, 1 );
1848 BOOST_CHECK_EQUAL( adm.get_request().vs_element.socket_option_tcp_quickack, 2 );
1849 BOOST_CHECK_EQUAL( adm.get_request().vs_element.socket_option_string, "deferaccept,nodelay,cork,quickackoff" );
1852 // parse_opt_vs_socket_func normal case 2
1857 char* argv[] = { "l7vsadm_test", "-A", "-O", "nodelay" };
1859 bool ret = adm.parse_opt_vs_socket_func_wp( pos, argc, argv );
1861 // unit_test[xx] parse_opt_vs_socket_func normal case 3 return value check
1862 BOOST_CHECK_EQUAL( ret, true );
1863 // unit_test[xx] parse_opt_vs_socket_func normal case 3 option check
1864 BOOST_CHECK_EQUAL( adm.get_request().vs_element.socket_option_tcp_defer_accept, 0 );
1865 BOOST_CHECK_EQUAL( adm.get_request().vs_element.socket_option_tcp_nodelay, 1 );
1866 BOOST_CHECK_EQUAL( adm.get_request().vs_element.socket_option_tcp_cork, 0 );
1867 BOOST_CHECK_EQUAL( adm.get_request().vs_element.socket_option_tcp_quickack, 0 );
1868 BOOST_CHECK_EQUAL( adm.get_request().vs_element.socket_option_string, "nodelay" );
1871 // parse_opt_vs_socket_func normal case 3
1876 char* argv[] = { "l7vsadm_test", "-A", "-O", "deferaccept,quickackon" };
1878 bool ret = adm.parse_opt_vs_socket_func_wp( pos, argc, argv );
1880 // unit_test[xx] parse_opt_vs_socket_func normal case 3 return value check
1881 BOOST_CHECK_EQUAL( ret, true );
1882 // unit_test[xx] parse_opt_vs_socket_func normal case 3 option check
1883 BOOST_CHECK_EQUAL( adm.get_request().vs_element.socket_option_tcp_defer_accept, 1 );
1884 BOOST_CHECK_EQUAL( adm.get_request().vs_element.socket_option_tcp_nodelay, 0 );
1885 BOOST_CHECK_EQUAL( adm.get_request().vs_element.socket_option_tcp_cork, 0 );
1886 BOOST_CHECK_EQUAL( adm.get_request().vs_element.socket_option_tcp_quickack, 1 );
1887 BOOST_CHECK_EQUAL( adm.get_request().vs_element.socket_option_string, "deferaccept,quickackon" );
1890 // pser_opt_vs_socket_func error case 1 (socket option not specified)
1895 char* argv[] = { "l7vsadm_test", "-A", "-O"};
1897 bool ret = adm.parse_opt_vs_socket_func_wp( pos, argc, argv );
1899 // unit_test[xx] parse_opt_vs_socket_func error case 1 return value check
1900 BOOST_CHECK_EQUAL( ret, false );
1903 // pser_opt_vs_socket_func error case 2 (unknown socket option)
1908 char* argv[] = { "l7vsadm_test", "-A", "-O", "deferaccept,nodelay,cork,quickackoff,zzz" };
1910 bool ret = adm.parse_opt_vs_socket_func_wp( pos, argc, argv );
1912 // unit_test[xx] parse_opt_vs_socket_func error case 2 return value check
1913 BOOST_CHECK_EQUAL( ret, false );
1916 // pser_opt_vs_socket_func error case 3 (deferaccept duplicated)
1921 char* argv[] = { "l7vsadm_test", "-A", "-O", "deferaccept,nodelay,cork,quickackoff,deferaccept" };
1923 bool ret = adm.parse_opt_vs_socket_func_wp( pos, argc, argv );
1925 // unit_test[xx] parse_opt_vs_socket_func error case 3 return value check
1926 BOOST_CHECK_EQUAL( ret, false );
1929 // pser_opt_vs_socket_func error case 4 (nodelay duplicated)
1934 char* argv[] = { "l7vsadm_test", "-A", "-O", "deferaccept,nodelay,cork,quickackoff,nodelay" };
1936 bool ret = adm.parse_opt_vs_socket_func_wp( pos, argc, argv );
1938 // unit_test[xx] parse_opt_vs_socket_func error case 4 return value check
1939 BOOST_CHECK_EQUAL( ret, false );
1942 // pser_opt_vs_socket_func error case 5 (cork duplicated)
1947 char* argv[] = { "l7vsadm_test", "-A", "-O", "deferaccept,nodelay,cork,quickackoff,cork" };
1949 bool ret = adm.parse_opt_vs_socket_func_wp( pos, argc, argv );
1951 // unit_test[xx] parse_opt_vs_socket_func error case 5 return value check
1952 BOOST_CHECK_EQUAL( ret, false );
1955 // pser_opt_vs_socket_func error case 6 (quickack duplicated 1)
1960 char* argv[] = { "l7vsadm_test", "-A", "-O", "deferaccept,nodelay,cork,quickackoff,quickackoff" };
1962 bool ret = adm.parse_opt_vs_socket_func_wp( pos, argc, argv );
1964 // unit_test[xx] parse_opt_vs_socket_func error case 6 return value check
1965 BOOST_CHECK_EQUAL( ret, false );
1968 // pser_opt_vs_socket_func error case 7 (quickack duplicated 2)
1973 char* argv[] = { "l7vsadm_test", "-A", "-O", "deferaccept,nodelay,cork,quickackoff,quickackon" };
1975 bool ret = adm.parse_opt_vs_socket_func_wp( pos, argc, argv );
1977 // unit_test[xx] parse_opt_vs_socket_func error case 7 return value check
1978 BOOST_CHECK_EQUAL( ret, false );
1981 BOOST_MESSAGE( "----- parse_opt_vs_socket_func_test end -----" );
1985 void parse_vs_func_test(){
1986 BOOST_MESSAGE( "----- parse_vs_func_test start -----" );
1988 // parse_vs_func normal case 1 (CMD_ADD_VS short_option)
1991 l7vs::l7vsadm_request::COMMAND_CODE_TAG cmd = l7vs::l7vsadm_request::CMD_ADD_VS;
1993 char* argv[] = { "l7vsadm_test",
1996 "10.144.169.87:22100",
2005 "10.144.169.86:8080",
2012 bool ret = adm.parse_vs_func_wp( cmd, argc, argv );
2014 // unit_test[122] parse_vs_func normal case 1 (CMD_ADD_VS short_option) return value check
2015 BOOST_CHECK_EQUAL( ret, true );
2016 // unit_test[123] parse_vs_func normal case 1 (CMD_ADD_VS short_option) request check
2017 BOOST_CHECK_EQUAL( adm.get_request().command, l7vs::l7vsadm_request::CMD_ADD_VS );
2018 // unit_test[124] parse_vs_func normal case 1 (CMD_ADD_VS short_option) tcp_accept_endpoint check
2019 boost::asio::ip::tcp::endpoint tcp_acc_ep = string_to_endpoint<boost::asio::ip::tcp>( "10.144.169.87:22100" );
2020 BOOST_CHECK_EQUAL( adm.get_request().vs_element.tcp_accept_endpoint, tcp_acc_ep );
2021 // unit_test[125] parse_vs_func normal case 1 (CMD_ADD_VS short_option) protocol module name check
2022 BOOST_CHECK_EQUAL( adm.get_request().vs_element.protocol_module_name, "cinsert" );
2023 // unit_test[126] parse_vs_func normal case 1 (CMD_ADD_VS short_option) protocol module arg check
2024 BOOST_CHECK_EQUAL( adm.get_request().vs_element.protocol_args.front(), "mod_arg" );
2025 // unit_test[127] parse_vs_func normal case 1 (CMD_ADD_VS short_option) schedule module name check
2026 BOOST_CHECK_EQUAL( adm.get_request().vs_element.schedule_module_name, "lc" );
2027 // unit_test[128] parse_vs_func normal case 1 (CMD_ADD_VS short_option) sorry_maxconnection check
2028 BOOST_CHECK_EQUAL( adm.get_request().vs_element.sorry_maxconnection, 50 );
2029 // unit_test[129] parse_vs_func normal case 1 (CMD_ADD_VS short_option) sorry_endpoint check
2030 boost::asio::ip::tcp::endpoint sorry_ep = string_to_endpoint<boost::asio::ip::tcp>( "10.144.169.86:8080" );
2031 BOOST_CHECK_EQUAL( adm.get_request().vs_element.sorry_endpoint, sorry_ep );
2032 // unit_test[130] parse_vs_func normal case 1 (CMD_ADD_VS short_option) qos_upstream check
2033 BOOST_CHECK_EQUAL( adm.get_request().vs_element.qos_upstream, ( 100000000ULL / 8 ) );
2034 // unit_test[131] parse_vs_func normal case 1 (CMD_ADD_VS short_option) qos_downstream check
2035 BOOST_CHECK_EQUAL( adm.get_request().vs_element.qos_downstream, ( 200000000ULL / 8 ) );
2038 // parse_vs_func normal case 2 (CMD_ADD_VS long_option)
2041 l7vs::l7vsadm_request::COMMAND_CODE_TAG cmd = l7vs::l7vsadm_request::CMD_ADD_VS;
2043 char* argv[] = { "l7vsadm_test",
2046 "10.144.169.86:11500",
2062 bool ret = adm.parse_vs_func_wp( cmd, argc, argv );
2064 // unit_test[132] parse_vs_func normal case 2 (CMD_ADD_VS long_option) return value check
2065 BOOST_CHECK_EQUAL( ret, true );
2066 // unit_test[133] parse_vs_func normal case 2 (CMD_ADD_VS long_option) request check
2067 BOOST_CHECK_EQUAL( adm.get_request().command, l7vs::l7vsadm_request::CMD_ADD_VS );
2068 // unit_test[134] parse_vs_func normal case 2 (CMD_ADD_VS long_option) tcp_accept_endpoint check
2069 boost::asio::ip::tcp::endpoint tcp_acc_ep = string_to_endpoint<boost::asio::ip::tcp>( "10.144.169.86:11500" );
2070 BOOST_CHECK_EQUAL( adm.get_request().vs_element.tcp_accept_endpoint, tcp_acc_ep );
2071 // unit_test[135] parse_vs_func normal case 2 (CMD_ADD_VS long_option) protocol module name check
2072 BOOST_CHECK_EQUAL( adm.get_request().vs_element.protocol_module_name, "cinsert" );
2073 // unit_test[136] parse_vs_func normal case 2 (CMD_ADD_VS long_option) protocol module arg check
2074 BOOST_CHECK_EQUAL( adm.get_request().vs_element.protocol_args.front(), "mod_arg" );
2075 // unit_test[137] parse_vs_func normal case 2 (CMD_ADD_VS long_option) schedule module name check
2076 BOOST_CHECK_EQUAL( adm.get_request().vs_element.schedule_module_name, "wrr" );
2077 // unit_test[138] parse_vs_func normal case 2 (CMD_ADD_VS long_option) sorry_maxconnection check
2078 BOOST_CHECK_EQUAL( adm.get_request().vs_element.sorry_maxconnection, 96 );
2079 // unit_test[139] parse_vs_func normal case 2 (CMD_ADD_VS long_option) sorry_endpoint check
2080 boost::asio::ip::tcp::endpoint sorry_ep = string_to_endpoint<boost::asio::ip::tcp>( "10.144.169.87:80" );
2081 BOOST_CHECK_EQUAL( adm.get_request().vs_element.sorry_endpoint, sorry_ep );
2082 // unit_test[140] parse_vs_func normal case 2 (CMD_ADD_VS long_option) qos_upstream check
2083 BOOST_CHECK_EQUAL( adm.get_request().vs_element.qos_upstream, ( 100000000ULL / 8 ) );
2084 // unit_test[141] parse_vs_func normal case 2 (CMD_ADD_VS long_option) qos_downstream check
2085 BOOST_CHECK_EQUAL( adm.get_request().vs_element.qos_downstream, ( 200000000ULL / 8 ) );
2088 // parse_vs_func normal case 3 (CMD_EDIT_VS short_option)
2091 l7vs::l7vsadm_request::COMMAND_CODE_TAG cmd = l7vs::l7vsadm_request::CMD_EDIT_VS;
2093 char* argv[] = { "l7vsadm_test",
2096 "10.144.169.87:22100",
2105 "10.144.169.86:8080",
2114 bool ret = adm.parse_vs_func_wp( cmd, argc, argv );
2116 // unit_test[142] parse_vs_func normal case 3 (CMD_EDIT_VS short_option) return value check
2117 BOOST_CHECK_EQUAL( ret, true );
2118 // unit_test[143] parse_vs_func normal case 3 (CMD_EDIT_VS short_option) request check
2119 BOOST_CHECK_EQUAL( adm.get_request().command, l7vs::l7vsadm_request::CMD_EDIT_VS );
2120 // unit_test[144] parse_vs_func normal case 3 (CMD_EDIT_VS short_option) tcp_accept_endpoint check
2121 boost::asio::ip::tcp::endpoint tcp_acc_ep = string_to_endpoint<boost::asio::ip::tcp>( "10.144.169.87:22100" );
2122 BOOST_CHECK_EQUAL( adm.get_request().vs_element.tcp_accept_endpoint, tcp_acc_ep );
2123 // unit_test[145] parse_vs_func normal case 3 (CMD_EDIT_VS short_option) protocol module name check
2124 BOOST_CHECK_EQUAL( adm.get_request().vs_element.protocol_module_name, "cinsert" );
2125 // unit_test[146] parse_vs_func normal case 3 (CMD_EDIT_VS short_option) protocol module arg check
2126 BOOST_CHECK_EQUAL( adm.get_request().vs_element.protocol_args.front(), "mod_arg" );
2127 // unit_test[147] parse_vs_func normal case 3 (CMD_EDIT_VS short_option) schedule module name check
2128 BOOST_CHECK_EQUAL( adm.get_request().vs_element.schedule_module_name, "rr" );
2129 // unit_test[148] parse_vs_func normal case 3 (CMD_EDIT_VS short_option) sorry_maxconnection check
2130 BOOST_CHECK_EQUAL( adm.get_request().vs_element.sorry_maxconnection, 50 );
2131 // unit_test[149] parse_vs_func normal case 3 (CMD_EDIT_VS short_option) sorry_endpoint check
2132 boost::asio::ip::tcp::endpoint sorry_ep = string_to_endpoint<boost::asio::ip::tcp>( "10.144.169.86:8080" );
2133 BOOST_CHECK_EQUAL( adm.get_request().vs_element.sorry_endpoint, sorry_ep );
2134 // unit_test[150] parse_vs_func normal case 3 (CMD_EDIT_VS short_option) sorry_flag check
2135 BOOST_CHECK_EQUAL( adm.get_request().vs_element.sorry_flag, true );
2136 // unit_test[151] parse_vs_func normal case 3 (CMD_EDIT_VS short_option) qos_upstream check
2137 BOOST_CHECK_EQUAL( adm.get_request().vs_element.qos_upstream, ( 100000000ULL / 8 ) );
2138 // unit_test[152] parse_vs_func normal case 3 (CMD_EDIT_VS short_option) qos_downstream check
2139 BOOST_CHECK_EQUAL( adm.get_request().vs_element.qos_downstream, ( 200000000ULL / 8 ) );
2142 // parse_vs_func normal case 4 (CMD_EDIT_VS long_option)
2145 l7vs::l7vsadm_request::COMMAND_CODE_TAG cmd = l7vs::l7vsadm_request::CMD_EDIT_VS;
2147 char* argv[] = { "l7vsadm_test",
2150 "10.144.169.86:11500",
2168 bool ret = adm.parse_vs_func_wp( cmd, argc, argv );
2170 // unit_test[153] parse_vs_func normal case 4 (CMD_EDIT_VS long_option) return value check
2171 BOOST_CHECK_EQUAL( ret, true );
2172 // unit_test[154] parse_vs_func normal case 4 (CMD_EDIT_VS long_option) request check
2173 BOOST_CHECK_EQUAL( adm.get_request().command, l7vs::l7vsadm_request::CMD_EDIT_VS );
2174 // unit_test[155] parse_vs_func normal case 4 (CMD_EDIT_VS long_option) tcp_accept_endpoint check
2175 boost::asio::ip::tcp::endpoint tcp_acc_ep = string_to_endpoint<boost::asio::ip::tcp>( "10.144.169.86:11500" );
2176 BOOST_CHECK_EQUAL( adm.get_request().vs_element.tcp_accept_endpoint, tcp_acc_ep );
2177 // unit_test[156] parse_vs_func normal case 4 (CMD_EDIT_VS long_option) protocol module name check
2178 BOOST_CHECK_EQUAL( adm.get_request().vs_element.protocol_module_name, "cinsert" );
2179 // unit_test[157] parse_vs_func normal case 4 (CMD_EDIT_VS long_option) protocol module arg check
2180 BOOST_CHECK_EQUAL( adm.get_request().vs_element.protocol_args.front(), "mod_arg" );
2181 // unit_test[158] parse_vs_func normal case 4 (CMD_EDIT_VS long_option) schedule module name check
2182 BOOST_CHECK_EQUAL( adm.get_request().vs_element.schedule_module_name, "lc" );
2183 // unit_test[159] parse_vs_func normal case 4 (CMD_EDIT_VS long_option) sorry_maxconnection check
2184 BOOST_CHECK_EQUAL( adm.get_request().vs_element.sorry_maxconnection, 96 );
2185 // unit_test[160] parse_vs_func normal case 4 (CMD_EDIT_VS long_option) sorry_endpoint check
2186 boost::asio::ip::tcp::endpoint sorry_ep = string_to_endpoint<boost::asio::ip::tcp>( "10.144.169.87:80" );
2187 BOOST_CHECK_EQUAL( adm.get_request().vs_element.sorry_endpoint, sorry_ep );
2188 // unit_test[161] parse_vs_func normal case 4 (CMD_EDIT_VS long_option) sorry_flag check
2189 BOOST_CHECK_EQUAL( adm.get_request().vs_element.sorry_flag, true );
2190 // unit_test[162] parse_vs_func normal case 4 (CMD_EDIT_VS long_option) qos_upstream check
2191 BOOST_CHECK_EQUAL( adm.get_request().vs_element.qos_upstream, ( 100000000ULL / 8 ) );
2192 // unit_test[163] parse_vs_func normal case 4 (CMD_EDIT_VS long_option) qos_downstream check
2193 BOOST_CHECK_EQUAL( adm.get_request().vs_element.qos_downstream, ( 200000000ULL / 8 ) );
2196 // parse_vs_func normal case 5 (CMD_DEL_VS short_option)
2199 l7vs::l7vsadm_request::COMMAND_CODE_TAG cmd = l7vs::l7vsadm_request::CMD_DEL_VS;
2201 char* argv[] = { "l7vsadm_test",
2204 "10.144.169.87:22100",
2210 bool ret = adm.parse_vs_func_wp( cmd, argc, argv );
2212 // unit_test[164] parse_vs_func normal case 5 (CMD_DEL_VS short_option) return value check
2213 BOOST_CHECK_EQUAL( ret, true );
2214 // unit_test[165] parse_vs_func normal case 5 (CMD_DEL_VS short_option) request check
2215 BOOST_CHECK_EQUAL( adm.get_request().command, l7vs::l7vsadm_request::CMD_DEL_VS );
2216 // unit_test[166] parse_vs_func normal case 5 (CMD_DEL_VS short_option) tcp_accept_endpoint check
2217 boost::asio::ip::tcp::endpoint tcp_acc_ep = string_to_endpoint<boost::asio::ip::tcp>( "10.144.169.87:22100" );
2218 BOOST_CHECK_EQUAL( adm.get_request().vs_element.tcp_accept_endpoint, tcp_acc_ep );
2219 // unit_test[167] parse_vs_func normal case 5 (CMD_DEL_VS short_option) protocol module name check
2220 BOOST_CHECK_EQUAL( adm.get_request().vs_element.protocol_module_name, "cinsert" );
2221 // unit_test[168] parse_vs_func normal case 5 (CMD_DEL_VS short_option) protocol module arg check
2222 BOOST_CHECK_EQUAL( adm.get_request().vs_element.protocol_args.front(), "mod_arg" );
2225 // parse_vs_func normal case 6 (CMD_DEL_VS long_option)
2228 l7vs::l7vsadm_request::COMMAND_CODE_TAG cmd = l7vs::l7vsadm_request::CMD_DEL_VS;
2230 char* argv[] = { "l7vsadm_test",
2233 "10.144.169.86:11500",
2239 bool ret = adm.parse_vs_func_wp( cmd, argc, argv );
2241 // unit_test[169] parse_vs_func normal case 6 (CMD_DEL_VS long_option) return value check
2242 BOOST_CHECK_EQUAL( ret, true );
2243 // unit_test[170] parse_vs_func normal case 6 (CMD_DEL_VS long_option) request check
2244 BOOST_CHECK_EQUAL( adm.get_request().command, l7vs::l7vsadm_request::CMD_DEL_VS );
2245 // unit_test[171] parse_vs_func normal case 6 (CMD_DEL_VS long_option) tcp_accept_endpoint check
2246 boost::asio::ip::tcp::endpoint tcp_acc_ep = string_to_endpoint<boost::asio::ip::tcp>( "10.144.169.86:11500" );
2247 BOOST_CHECK_EQUAL( adm.get_request().vs_element.tcp_accept_endpoint, tcp_acc_ep );
2248 // unit_test[172] parse_vs_func normal case 6 (CMD_DEL_VS long_option) protocol module name check
2249 BOOST_CHECK_EQUAL( adm.get_request().vs_element.protocol_module_name, "curl" );
2250 // unit_test[173] parse_vs_func normal case 6 (CMD_DEL_VS long_option) protocol module arg check
2251 BOOST_CHECK_EQUAL( adm.get_request().vs_element.protocol_args.front(), "specified_url" );
2254 // parse_vs_func normal case 7 (CMD_ADD_VS scheduler omit)
2257 l7vs::l7vsadm_request::COMMAND_CODE_TAG cmd = l7vs::l7vsadm_request::CMD_ADD_VS;
2259 char* argv[] = { "l7vsadm_test",
2262 "10.144.169.87:22100",
2268 bool ret = adm.parse_vs_func_wp( cmd, argc, argv );
2270 // unit_test[174] parse_vs_func normal case 7 (CMD_ADD_VS scheduler omit) return value check
2271 BOOST_CHECK_EQUAL( ret, true );
2272 // unit_test[175] parse_vs_func normal case 7 (CMD_ADD_VS scheduler omit) request check
2273 BOOST_CHECK_EQUAL( adm.get_request().command, l7vs::l7vsadm_request::CMD_ADD_VS );
2274 // unit_test[176] parse_vs_func normal case 7 (CMD_ADD_VS scheduler omit) tcp_accept_endpoint check
2275 boost::asio::ip::tcp::endpoint tcp_acc_ep = string_to_endpoint<boost::asio::ip::tcp>( "10.144.169.87:22100" );
2276 BOOST_CHECK_EQUAL( adm.get_request().vs_element.tcp_accept_endpoint, tcp_acc_ep );
2277 // unit_test[177] parse_vs_func normal case 7 (CMD_ADD_VS scheduler omit) protocol module name check
2278 BOOST_CHECK_EQUAL( adm.get_request().vs_element.protocol_module_name, "cinsert" );
2279 // unit_test[178] parse_vs_func normal case 7 (CMD_ADD_VS scheduler omit) protocol module arg check
2280 BOOST_CHECK_EQUAL( adm.get_request().vs_element.protocol_args.front(), "mod_arg" );
2281 // unit_test[179] parse_vs_func normal case 7 (CMD_ADD_VS scheduler omit) schedule module name check
2282 BOOST_CHECK_EQUAL( adm.get_request().vs_element.schedule_module_name, "rr" );
2285 // parse_vs_func normal case 8 (CMD_FLUSH_VS)
2288 l7vs::l7vsadm_request::COMMAND_CODE_TAG cmd = l7vs::l7vsadm_request::CMD_FLUSH_VS;
2290 char* argv[] = { "l7vsadm_test",
2294 bool ret = adm.parse_vs_func_wp( cmd, argc, argv );
2296 // unit_test[180] parse_vs_func normal case 8 (CMD_FLUSH_VS) return value check
2297 BOOST_CHECK_EQUAL( ret, true );
2298 // unit_test[181] parse_vs_func normal case 8 (CMD_FLUSH_VS) request check
2299 BOOST_CHECK_EQUAL( adm.get_request().command, l7vs::l7vsadm_request::CMD_FLUSH_VS );
2302 // parse_vs_func normal case 9 (CMD_EDIT_VS minimum option)
2305 l7vs::l7vsadm_request::COMMAND_CODE_TAG cmd = l7vs::l7vsadm_request::CMD_EDIT_VS;
2307 char* argv[] = { "l7vsadm_test",
2310 "10.144.169.87:22100",
2318 bool ret = adm.parse_vs_func_wp( cmd, argc, argv );
2320 // unit_test[182] parse_vs_func normal case 9 (CMD_EDIT_VS minimum option) return value check
2321 BOOST_CHECK_EQUAL( ret, true );
2322 // unit_test[183] parse_vs_func normal case 9 (CMD_EDIT_VS minimum option) request check
2323 BOOST_CHECK_EQUAL( adm.get_request().command, l7vs::l7vsadm_request::CMD_EDIT_VS );
2324 // unit_test[184] parse_vs_func normal case 9 (CMD_EDIT_VS minimum option) tcp_accept_endpoint check
2325 boost::asio::ip::tcp::endpoint tcp_acc_ep = string_to_endpoint<boost::asio::ip::tcp>( "10.144.169.87:22100" );
2326 BOOST_CHECK_EQUAL( adm.get_request().vs_element.tcp_accept_endpoint, tcp_acc_ep );
2327 // unit_test[185] parse_vs_func normal case 9 (CMD_EDIT_VS minimum option) protocol module name check
2328 BOOST_CHECK_EQUAL( adm.get_request().vs_element.protocol_module_name, "cinsert" );
2331 // parse_vs_func normal case 10 (CMD_DEL_VS minimum option)
2334 l7vs::l7vsadm_request::COMMAND_CODE_TAG cmd = l7vs::l7vsadm_request::CMD_DEL_VS;
2336 char* argv[] = { "l7vsadm_test",
2339 "10.144.169.87:22100",
2344 bool ret = adm.parse_vs_func_wp( cmd, argc, argv );
2346 // unit_test[186] parse_vs_func normal case 10 (CMD_DEL_VS minimum option) return value check
2347 BOOST_CHECK_EQUAL( ret, true );
2348 // unit_test[187] parse_vs_func normal case 10 (CMD_DEL_VS minimum option) request check
2349 BOOST_CHECK_EQUAL( adm.get_request().command, l7vs::l7vsadm_request::CMD_DEL_VS );
2350 // unit_test[188] parse_vs_func normal case 10 (CMD_DEL_VS minimum option) tcp_accept_endpoint check
2351 boost::asio::ip::tcp::endpoint tcp_acc_ep = string_to_endpoint<boost::asio::ip::tcp>( "10.144.169.87:22100" );
2352 BOOST_CHECK_EQUAL( adm.get_request().vs_element.tcp_accept_endpoint, tcp_acc_ep );
2353 // unit_test[189] parse_vs_func normal case 10 (CMD_DEL_VS minimum option) protocol module name check
2354 BOOST_CHECK_EQUAL( adm.get_request().vs_element.protocol_module_name, "cinsert" );
2357 // parse_vs_func error case 1 (CMD_ADD_VS protocol module not specified)
2360 l7vs::l7vsadm_request::COMMAND_CODE_TAG cmd = l7vs::l7vsadm_request::CMD_ADD_VS;
2362 char* argv[] = { "l7vsadm_test",
2365 "10.144.169.87:22100"
2368 bool ret = adm.parse_vs_func_wp( cmd, argc, argv );
2370 // unit_test[190] parse_vs_func error case 1 (CMD_ADD_VS protocol module not specified) return value check
2371 BOOST_CHECK_EQUAL( ret, false );
2374 // parse_vs_func error case 2 (CMD_ADD_VS target address not specified)
2377 l7vs::l7vsadm_request::COMMAND_CODE_TAG cmd = l7vs::l7vsadm_request::CMD_ADD_VS;
2379 char* argv[] = { "l7vsadm_test",
2386 bool ret = adm.parse_vs_func_wp( cmd, argc, argv );
2388 // unit_test[191] parse_vs_func error case 2 (CMD_ADD_VS target address not specified) return value check
2389 BOOST_CHECK_EQUAL( ret, false );
2392 // parse_vs_func error case 3 (upper option value under 0)
2395 l7vs::l7vsadm_request::COMMAND_CODE_TAG cmd = l7vs::l7vsadm_request::CMD_ADD_VS;
2397 char* argv[] = { "l7vsadm_test",
2400 "10.144.169.87:22100",
2408 bool ret = adm.parse_vs_func_wp( cmd, argc, argv );
2410 // unit_test[192] parse_vs_func error case 3 (upper option value under 0) return value check
2411 BOOST_CHECK_EQUAL( ret, false );
2414 // parse_vs_func error case 4 (access log on but not specified access log fil name)
2417 l7vs::l7vsadm_request::COMMAND_CODE_TAG cmd = l7vs::l7vsadm_request::CMD_ADD_VS;
2419 char* argv[] = { "l7vsadm_test",
2422 "10.144.169.87:22100",
2430 bool ret = adm.parse_vs_func_wp( cmd, argc, argv );
2432 // unit_test[xx] parse_vs_func error case 4 return value check
2433 BOOST_CHECK_EQUAL( ret, false );
2436 BOOST_MESSAGE( "----- parse_vs_func_test end -----" );
2440 void parse_opt_rs_weight_func_test(){
2441 BOOST_MESSAGE( "----- parse_opt_rs_weight_func_test start -----" );
2443 // parse_opt_rs_weight_func normal case 1
2448 char* argv[] = { "l7vsadm_test", "-a", "-w", "64" };
2449 adm.get_request().vs_element.realserver_vector.push_back( l7vs::realserver_element() );
2451 bool ret = adm.parse_opt_rs_weight_func_wp( pos, argc, argv );
2453 // unit_test[193] parse_opt_rs_weight_func normal case 1 return value check
2454 BOOST_CHECK_EQUAL( ret, true );
2455 // unit_test[194] parse_opt_rs_weight_func normal case 1 weight check
2456 BOOST_CHECK_EQUAL( adm.get_request().vs_element.realserver_vector.front().weight, 64 );
2459 // parse_opt_rs_weight_func error case 1 (invalid weight value (charactor))
2464 char* argv[] = { "l7vsadm_test", "-a", "-w", "a" };
2465 adm.get_request().vs_element.realserver_vector.push_back( l7vs::realserver_element() );
2467 bool ret = adm.parse_opt_rs_weight_func_wp( pos, argc, argv );
2469 // unit_test[195] parse_opt_rs_weight_func error case 1 (invalid weight value (charactor)) return value check
2470 BOOST_CHECK_EQUAL( ret, false );
2473 // parse_opt_rs_weight_func error case 2 (invalid weight value(int over))
2478 std::stringstream ss;
2479 ss << (1ULL) + INT_MAX;
2480 char* argv[] = { "l7vsadm_test", "-a", "-w", const_cast<char*>( ss.str().c_str() ) };
2481 adm.get_request().vs_element.realserver_vector.push_back( l7vs::realserver_element() );
2483 bool ret = adm.parse_opt_rs_weight_func_wp( pos, argc, argv );
2485 // unit_test[196] parse_opt_rs_weight_func error case 2 (invalid weight value(int over)) return value check
2486 BOOST_CHECK_EQUAL( ret, false );
2489 // parse_opt_rs_weight_func error case 3 (no weight value)
2494 char* argv[] = { "l7vsadm_test", "-a", "-w" };
2495 adm.get_request().vs_element.realserver_vector.push_back( l7vs::realserver_element() );
2497 bool ret = adm.parse_opt_rs_weight_func_wp( pos, argc, argv );
2499 // unit_test[197] parse_opt_rs_weight_func error case 3 (no weight value) return value check
2500 BOOST_CHECK_EQUAL( ret, false );
2503 // parse_opt_rs_weight_func error case 4 (under 0)
2508 char* argv[] = { "l7vsadm_test", "-a", "-w", "-1" };
2509 adm.get_request().vs_element.realserver_vector.push_back( l7vs::realserver_element() );
2511 bool ret = adm.parse_opt_rs_weight_func_wp( pos, argc, argv );
2513 // unit_test[198] parse_opt_rs_weight_func error case 4 (under 0) return value check
2514 BOOST_CHECK_EQUAL( ret, false );
2517 // parse_opt_rs_weight_func error case 5 (over 100)
2522 char* argv[] = { "l7vsadm_test", "-a", "-w", "101" };
2523 adm.get_request().vs_element.realserver_vector.push_back( l7vs::realserver_element() );
2525 bool ret = adm.parse_opt_rs_weight_func_wp( pos, argc, argv );
2527 // unit_test[199] parse_opt_rs_weight_func error case 5 (over 100) return value check
2528 BOOST_CHECK_EQUAL( ret, false );
2531 BOOST_MESSAGE( "----- parse_opt_rs_weight_func_test end -----" );
2535 void parse_opt_rs_realserver_func_test(){
2536 BOOST_MESSAGE( "----- parse_opt_rs_realserver_func_test start -----" );
2538 // parse_opt_rs_realserver_func normal case 1
2543 char* argv[] = { "l7vsadm_test", "-a", "-r", "10.144.169.87:8080" };
2544 adm.get_request().vs_element.realserver_vector.push_back( l7vs::realserver_element() );
2546 bool ret = adm.parse_opt_rs_realserver_func_wp( pos, argc, argv );
2548 // unit_test[200] parse_opt_rs_realserver_func normal case 1 return value check
2549 BOOST_CHECK_EQUAL( ret, true );
2550 // unit_test[201] parse_opt_rs_realserver_func normal case 1 endpoint check
2551 boost::asio::ip::tcp::endpoint ep = string_to_endpoint<boost::asio::ip::tcp>( "10.144.169.87:8080" );
2552 BOOST_CHECK_EQUAL( adm.get_request().vs_element.realserver_vector.front().tcp_endpoint, ep );
2555 // parse_opt_rs_realserver_func normal case 2 (realserver specified in name)
2560 char* argv[] = { "l7vsadm_test", "-a", "-r", "localhost:http" };
2561 adm.get_request().vs_element.realserver_vector.push_back( l7vs::realserver_element() );
2563 bool ret = adm.parse_opt_rs_realserver_func_wp( pos, argc, argv );
2565 // unit_test[202] parse_opt_rs_realserver_func normal case 2 (realserver specified in name) return value check
2566 BOOST_CHECK_EQUAL( ret, true );
2567 // unit_test[203] parse_opt_rs_realserver_func normal case 2 (realserver specified in name) endpoint check
2568 boost::asio::ip::tcp::endpoint ep1 = string_to_endpoint<boost::asio::ip::tcp>("127.0.0.1:80");
2569 boost::asio::ip::tcp::endpoint ep2 = string_to_endpoint<boost::asio::ip::tcp>("[::1]:80");
2570 BOOST_CHECK( adm.get_request().vs_element.realserver_vector.front().tcp_endpoint == ep1 ||
2571 adm.get_request().vs_element.realserver_vector.front().tcp_endpoint == ep2);
2574 // parse_opt_rs_realserver_func error case 1 (invalid endpoint)
2579 char* argv[] = { "l7vsadm_test", "-a", "-r", "10.144.169.257:8080" };
2580 adm.get_request().vs_element.realserver_vector.push_back( l7vs::realserver_element() );
2582 bool ret = adm.parse_opt_rs_realserver_func_wp( pos, argc, argv );
2584 // unit_test[204] parse_opt_rs_realserver_func error case 1 (invalid endpoint) return value check
2585 BOOST_CHECK_EQUAL( ret, false );
2588 // parse_opt_rs_realserver_func error case 2 (no endpoint)
2593 char* argv[] = { "l7vsadm_test", "-a", "-r" };
2594 adm.get_request().vs_element.realserver_vector.push_back( l7vs::realserver_element() );
2596 bool ret = adm.parse_opt_rs_realserver_func_wp( pos, argc, argv );
2598 // unit_test[205] parse_opt_rs_realserver_func error case 2 (no endpoint) return value check
2599 BOOST_CHECK_EQUAL( ret, false );
2602 // parse_opt_rs_realserver_func error case 3 (0.0.0.0 address)
2607 char* argv[] = { "l7vsadm_test", "-a", "-r", "0.0.0.0:8080" };
2608 adm.get_request().vs_element.realserver_vector.push_back( l7vs::realserver_element() );
2610 bool ret = adm.parse_opt_rs_realserver_func_wp( pos, argc, argv );
2612 // unit_test[206] parse_opt_rs_realserver_func error case 3 (0.0.0.0 address) return value check
2613 BOOST_CHECK_EQUAL( ret, false );
2616 // parse_opt_rs_realserver_func error case 4 (0 port)
2621 char* argv[] = { "l7vsadm_test", "-a", "-r", "10.144.169.87:0" };
2622 adm.get_request().vs_element.realserver_vector.push_back( l7vs::realserver_element() );
2624 bool ret = adm.parse_opt_rs_realserver_func_wp( pos, argc, argv );
2626 // unit_test[207] parse_opt_rs_realserver_func error case 4 (0 port) return value check
2627 BOOST_CHECK_EQUAL( ret, false );
2630 // parse_opt_rs_realserver_func error case 5 (invalid port (99999))
2635 char* argv[] = { "l7vsadm_test", "-a", "-r", "10.144.169.87:99999" };
2636 adm.get_request().vs_element.realserver_vector.push_back( l7vs::realserver_element() );
2638 bool ret = adm.parse_opt_rs_realserver_func_wp( pos, argc, argv );
2640 // unit_test[208] parse_opt_rs_realserver_func error case 5 (invalid port (99999)) return value check
2641 BOOST_CHECK_EQUAL( ret, false );
2644 // parse_opt_rs_realserver_func error case 6 (hostname omitted)
2649 char* argv[] = { "l7vsadm_test", "-a", "-r", ":22100" };
2650 adm.get_request().vs_element.realserver_vector.push_back( l7vs::realserver_element() );
2652 bool ret = adm.parse_opt_rs_realserver_func_wp( pos, argc, argv );
2654 // unit_test[209] parse_opt_rs_realserver_func error case 6 (hostname omitted) return value check
2655 BOOST_CHECK_EQUAL( ret, false );
2658 // parse_opt_rs_realserver_func error case 7 (port omitted)
2663 char* argv[] = { "l7vsadm_test", "-a", "-r", "10.144.169.87:" };
2664 adm.get_request().vs_element.realserver_vector.push_back( l7vs::realserver_element() );
2666 bool ret = adm.parse_opt_rs_realserver_func_wp( pos, argc, argv );
2668 // unit_test[210] parse_opt_rs_realserver_func error case 7 (port omitted) return value check
2669 BOOST_CHECK_EQUAL( ret, false );
2672 BOOST_MESSAGE( "----- parse_opt_rs_realserver_func_test end -----" );
2676 void parse_rs_func_test(){
2677 BOOST_MESSAGE( "----- parse_rs_func_test start -----" );
2679 // parse_rs_func normal case 1 (CMD_ADD_RS short_option)
2682 l7vs::l7vsadm_request::COMMAND_CODE_TAG cmd = l7vs::l7vsadm_request::CMD_ADD_RS;
2684 char* argv[] = { "l7vsadm_test",
2687 "10.144.169.87:22100",
2692 "10.144.169.86:8080",
2697 bool ret = adm.parse_rs_func_wp( cmd, argc, argv );
2699 // unit_test[211] parse_rs_func normal case 1 (CMD_ADD_RS short_option) return value check
2700 BOOST_CHECK_EQUAL( ret, true );
2701 // unit_test[212] parse_rs_func normal case 1 (CMD_ADD_RS short_option) request check
2702 BOOST_CHECK_EQUAL( adm.get_request().command, l7vs::l7vsadm_request::CMD_ADD_RS );
2703 // unit_test[213] parse_rs_func normal case 1 (CMD_ADD_RS short_option) tcp_accept_endpoint check
2704 boost::asio::ip::tcp::endpoint tcp_acc_ep = string_to_endpoint<boost::asio::ip::tcp>( "10.144.169.87:22100" );
2705 BOOST_CHECK_EQUAL( adm.get_request().vs_element.tcp_accept_endpoint, tcp_acc_ep );
2706 // unit_test[214] parse_rs_func normal case 1 (CMD_ADD_RS short_option) protocol module name check
2707 BOOST_CHECK_EQUAL( adm.get_request().vs_element.protocol_module_name, "cinsert" );
2708 // unit_test[215] parse_rs_func normal case 1 (CMD_ADD_RS short_option) protocol module arg check
2709 BOOST_CHECK_EQUAL( adm.get_request().vs_element.protocol_args.front(), "mod_arg" );
2710 // unit_test[216] parse_rs_func normal case 1 (CMD_ADD_RS short_option) realserver endpoint check
2711 boost::asio::ip::tcp::endpoint rs_ep = string_to_endpoint<boost::asio::ip::tcp>( "10.144.169.86:8080" );
2712 BOOST_CHECK_EQUAL( adm.get_request().vs_element.realserver_vector.front().tcp_endpoint, rs_ep );
2713 // unit_test[217] parse_rs_func normal case 1 (CMD_ADD_RS short_option) weight check
2714 BOOST_CHECK_EQUAL( adm.get_request().vs_element.realserver_vector.front().weight, 10 );
2717 // parse_rs_func normal case 2 (CMD_ADD_RS long_option)
2720 l7vs::l7vsadm_request::COMMAND_CODE_TAG cmd = l7vs::l7vsadm_request::CMD_ADD_RS;
2722 char* argv[] = { "l7vsadm_test",
2725 "10.144.169.86:11500",
2730 "10.144.169.87:8888",
2735 bool ret = adm.parse_rs_func_wp( cmd, argc, argv );
2737 // unit_test[218] parse_rs_func normal case 2 (CMD_ADD_RS long_option) return value check
2738 BOOST_CHECK_EQUAL( ret, true );
2739 // unit_test[219] parse_rs_func normal case 2 (CMD_ADD_RS long_option) request check
2740 BOOST_CHECK_EQUAL( adm.get_request().command, l7vs::l7vsadm_request::CMD_ADD_RS );
2741 // unit_test[220] parse_rs_func normal case 2 (CMD_ADD_RS long_option) tcp_accept_endpoint check
2742 boost::asio::ip::tcp::endpoint tcp_acc_ep = string_to_endpoint<boost::asio::ip::tcp>( "10.144.169.86:11500" );
2743 BOOST_CHECK_EQUAL( adm.get_request().vs_element.tcp_accept_endpoint, tcp_acc_ep );
2744 // unit_test[221] parse_rs_func normal case 2 (CMD_ADD_RS long_option) protocol module name check
2745 BOOST_CHECK_EQUAL( adm.get_request().vs_element.protocol_module_name, "cinsert" );
2746 // unit_test[222] parse_rs_func normal case 2 (CMD_ADD_RS long_option) protocol module arg check
2747 BOOST_CHECK_EQUAL( adm.get_request().vs_element.protocol_args.front(), "mod_arg" );
2748 // unit_test[223] parse_rs_func normal case 2 (CMD_ADD_RS long_option) realserver endpoint check
2749 boost::asio::ip::tcp::endpoint rs_ep = string_to_endpoint<boost::asio::ip::tcp>( "10.144.169.87:8888" );
2750 BOOST_CHECK_EQUAL( adm.get_request().vs_element.realserver_vector.front().tcp_endpoint, rs_ep );
2751 // unit_test[224] parse_rs_func normal case 2 (CMD_ADD_RS long_option) weight check
2752 BOOST_CHECK_EQUAL( adm.get_request().vs_element.realserver_vector.front().weight, 20 );
2755 // parse_rs_func normal case 3 (CMD_EDIT_RS short_option)
2758 l7vs::l7vsadm_request::COMMAND_CODE_TAG cmd = l7vs::l7vsadm_request::CMD_EDIT_RS;
2760 char* argv[] = { "l7vsadm_test",
2763 "10.144.169.87:22100",
2768 "10.144.169.86:8080",
2773 bool ret = adm.parse_rs_func_wp( cmd, argc, argv );
2775 // unit_test[225] parse_rs_func normal case 3 (CMD_EDIT_RS short_option) return value check
2776 BOOST_CHECK_EQUAL( ret, true );
2777 // unit_test[226] parse_rs_func normal case 3 (CMD_EDIT_RS short_option) request check
2778 BOOST_CHECK_EQUAL( adm.get_request().command, l7vs::l7vsadm_request::CMD_EDIT_RS );
2779 // unit_test[227] parse_rs_func normal case 3 (CMD_EDIT_RS short_option) tcp_accept_endpoint check
2780 boost::asio::ip::tcp::endpoint tcp_acc_ep = string_to_endpoint<boost::asio::ip::tcp>( "10.144.169.87:22100" );
2781 BOOST_CHECK_EQUAL( adm.get_request().vs_element.tcp_accept_endpoint, tcp_acc_ep );
2782 // unit_test[228] parse_rs_func normal case 3 (CMD_EDIT_RS short_option) protocol module name check
2783 BOOST_CHECK_EQUAL( adm.get_request().vs_element.protocol_module_name, "cinsert" );
2784 // unit_test[229] parse_rs_func normal case 3 (CMD_EDIT_RS short_option) protocol module arg check
2785 BOOST_CHECK_EQUAL( adm.get_request().vs_element.protocol_args.front(), "mod_arg" );
2786 // unit_test[230] parse_rs_func normal case 3 (CMD_EDIT_RS short_option) realserver endpoint check
2787 boost::asio::ip::tcp::endpoint rs_ep = string_to_endpoint<boost::asio::ip::tcp>( "10.144.169.86:8080" );
2788 BOOST_CHECK_EQUAL( adm.get_request().vs_element.realserver_vector.front().tcp_endpoint, rs_ep );
2789 // unit_test[231] parse_rs_func normal case 3 (CMD_EDIT_RS short_option) weight check
2790 BOOST_CHECK_EQUAL( adm.get_request().vs_element.realserver_vector.front().weight, 20 );
2793 // parse_rs_func normal case 4 (CMD_EDIT_RS long_option)
2796 l7vs::l7vsadm_request::COMMAND_CODE_TAG cmd = l7vs::l7vsadm_request::CMD_EDIT_RS;
2798 char* argv[] = { "l7vsadm_test",
2801 "10.144.169.86:11500",
2806 "10.144.169.87:8888",
2811 bool ret = adm.parse_rs_func_wp( cmd, argc, argv );
2813 // unit_test[232] parse_rs_func normal case 4 (CMD_EDIT_RS long_option) return value check
2814 BOOST_CHECK_EQUAL( ret, true );
2815 // unit_test[233] parse_rs_func normal case 4 (CMD_EDIT_RS long_option) request check
2816 BOOST_CHECK_EQUAL( adm.get_request().command, l7vs::l7vsadm_request::CMD_EDIT_RS );
2817 // unit_test[234] parse_rs_func normal case 4 (CMD_EDIT_RS long_option) tcp_accept_endpoint check
2818 boost::asio::ip::tcp::endpoint tcp_acc_ep = string_to_endpoint<boost::asio::ip::tcp>( "10.144.169.86:11500" );
2819 BOOST_CHECK_EQUAL( adm.get_request().vs_element.tcp_accept_endpoint, tcp_acc_ep );
2820 // unit_test[235] parse_rs_func normal case 4 (CMD_EDIT_RS long_option) protocol module name check
2821 BOOST_CHECK_EQUAL( adm.get_request().vs_element.protocol_module_name, "cinsert" );
2822 // unit_test[236] parse_rs_func normal case 4 (CMD_EDIT_RS long_option) protocol module arg check
2823 BOOST_CHECK_EQUAL( adm.get_request().vs_element.protocol_args.front(), "mod_arg" );
2824 // unit_test[237] parse_rs_func normal case 4 (CMD_EDIT_RS long_option) realserver endpoint check
2825 boost::asio::ip::tcp::endpoint rs_ep = string_to_endpoint<boost::asio::ip::tcp>( "10.144.169.87:8888" );
2826 BOOST_CHECK_EQUAL( adm.get_request().vs_element.realserver_vector.front().tcp_endpoint, rs_ep );
2827 // unit_test[238] parse_rs_func normal case 4 (CMD_EDIT_RS long_option) weight check
2828 BOOST_CHECK_EQUAL( adm.get_request().vs_element.realserver_vector.front().weight, 30 );
2831 // parse_rs_func normal case 5 (CMD_DEL_RS short_option)
2834 l7vs::l7vsadm_request::COMMAND_CODE_TAG cmd = l7vs::l7vsadm_request::CMD_DEL_RS;
2836 char* argv[] = { "l7vsadm_test",
2839 "10.144.169.87:22100",
2844 "10.144.169.86:8080"
2847 bool ret = adm.parse_rs_func_wp( cmd, argc, argv );
2849 // unit_test[239] parse_rs_func normal case 5 (CMD_DEL_RS short_option) return value check
2850 BOOST_CHECK_EQUAL( ret, true );
2851 // unit_test[240] parse_rs_func normal case 5 (CMD_DEL_RS short_option) request check
2852 BOOST_CHECK_EQUAL( adm.get_request().command, l7vs::l7vsadm_request::CMD_DEL_RS );
2853 // unit_test[241] parse_rs_func normal case 5 (CMD_DEL_RS short_option) tcp_accept_endpoint check
2854 boost::asio::ip::tcp::endpoint tcp_acc_ep = string_to_endpoint<boost::asio::ip::tcp>( "10.144.169.87:22100" );
2855 BOOST_CHECK_EQUAL( adm.get_request().vs_element.tcp_accept_endpoint, tcp_acc_ep );
2856 // unit_test[242] parse_rs_func normal case 5 (CMD_DEL_RS short_option) protocol module name check
2857 BOOST_CHECK_EQUAL( adm.get_request().vs_element.protocol_module_name, "cinsert" );
2858 // unit_test[243] parse_rs_func normal case 5 (CMD_DEL_RS short_option) protocol module arg check
2859 BOOST_CHECK_EQUAL( adm.get_request().vs_element.protocol_args.front(), "mod_arg" );
2860 // unit_test[244] parse_rs_func normal case 5 (CMD_DEL_RS short_option) realserver endpoint check
2861 boost::asio::ip::tcp::endpoint rs_ep = string_to_endpoint<boost::asio::ip::tcp>( "10.144.169.86:8080" );
2862 BOOST_CHECK_EQUAL( adm.get_request().vs_element.realserver_vector.front().tcp_endpoint, rs_ep );
2865 // parse_rs_func normal case 6 (CMD_DEL_RS long_option)
2868 l7vs::l7vsadm_request::COMMAND_CODE_TAG cmd = l7vs::l7vsadm_request::CMD_DEL_RS;
2870 char* argv[] = { "l7vsadm_test",
2873 "10.144.169.86:11500",
2878 "10.144.169.87:8888"
2881 bool ret = adm.parse_rs_func_wp( cmd, argc, argv );
2883 // unit_test[245] parse_rs_func normal case 6 (CMD_DEL_RS long_option) return value check
2884 BOOST_CHECK_EQUAL( ret, true );
2885 // unit_test[246] parse_rs_func normal case 6 (CMD_DEL_RS long_option) request check
2886 BOOST_CHECK_EQUAL( adm.get_request().command, l7vs::l7vsadm_request::CMD_DEL_RS );
2887 // unit_test[247] parse_rs_func normal case 6 (CMD_DEL_RS long_option) tcp_accept_endpoint check
2888 boost::asio::ip::tcp::endpoint tcp_acc_ep = string_to_endpoint<boost::asio::ip::tcp>( "10.144.169.86:11500" );
2889 BOOST_CHECK_EQUAL( adm.get_request().vs_element.tcp_accept_endpoint, tcp_acc_ep );
2890 // unit_test[248] parse_rs_func normal case 6 (CMD_DEL_RS long_option) protocol module name check
2891 BOOST_CHECK_EQUAL( adm.get_request().vs_element.protocol_module_name, "cinsert" );
2892 // unit_test[249] parse_rs_func normal case 6 (CMD_DEL_RS long_option) protocol module arg check
2893 BOOST_CHECK_EQUAL( adm.get_request().vs_element.protocol_args.front(), "mod_arg" );
2894 // unit_test[250] parse_rs_func normal case 6 (CMD_DEL_RS long_option) realserver endpoint check
2895 boost::asio::ip::tcp::endpoint rs_ep = string_to_endpoint<boost::asio::ip::tcp>( "10.144.169.87:8888" );
2896 BOOST_CHECK_EQUAL( adm.get_request().vs_element.realserver_vector.front().tcp_endpoint, rs_ep );
2900 // parse_rs_func normal case 7 (CMD_ADD_RS ipv6 )
2903 l7vs::l7vsadm_request::COMMAND_CODE_TAG cmd = l7vs::l7vsadm_request::CMD_ADD_RS;
2905 char* argv[] = { "l7vsadm_test",
2908 "10.144.169.87:22100",
2918 bool ret = adm.parse_rs_func_wp( cmd, argc, argv );
2920 // unit_test[xx] parse_rs_func normal case 7 (CMD_ADD_RS ipv6) return value check
2921 BOOST_CHECK_EQUAL( ret, true );
2922 // unit_test[xx] parse_rs_func normal case 7 (CMD_ADD_RS ipv6) request check
2923 BOOST_CHECK_EQUAL( adm.get_request().command, l7vs::l7vsadm_request::CMD_ADD_RS );
2924 // unit_test[xx] parse_rs_func normal case 7 (CMD_ADD_RS ipv6) tcp_accept_endpoint check
2925 boost::asio::ip::tcp::endpoint tcp_acc_ep = string_to_endpoint<boost::asio::ip::tcp>( "10.144.169.87:22100" );
2926 BOOST_CHECK_EQUAL( adm.get_request().vs_element.tcp_accept_endpoint, tcp_acc_ep );
2927 // unit_test[xx] parse_rs_func normal case 7 (CMD_ADD_RS ipv6) protocol module name check
2928 BOOST_CHECK_EQUAL( adm.get_request().vs_element.protocol_module_name, "cinsert" );
2929 // unit_test[xx] parse_rs_func normal case 7 (CMD_ADD_RS ipv6) protocol module arg check
2930 BOOST_CHECK_EQUAL( adm.get_request().vs_element.protocol_args.front(), "mod_arg" );
2931 // unit_test[xx] parse_rs_func normal case 7 (CMD_ADD_RS ipv6) realserver endpoint check
2932 boost::asio::ip::tcp::endpoint rs_ep = string_to_endpoint<boost::asio::ip::tcp>( "[2001::10]:8080" );
2933 BOOST_CHECK_EQUAL( adm.get_request().vs_element.realserver_vector.front().tcp_endpoint, rs_ep );
2934 // unit_test[xx] parse_rs_func normal case 7 (CMD_ADD_RS ipv6) weight check
2935 BOOST_CHECK_EQUAL( adm.get_request().vs_element.realserver_vector.front().weight, 10 );
2938 // parse_rs_func error case 1 (CMD_ADD_RS protocol module not specified)
2941 l7vs::l7vsadm_request::COMMAND_CODE_TAG cmd = l7vs::l7vsadm_request::CMD_ADD_RS;
2943 char* argv[] = { "l7vsadm_test",
2946 "10.144.169.87:22100",
2948 "10.144.169.86:8080"
2951 bool ret = adm.parse_rs_func_wp( cmd, argc, argv );
2953 // unit_test[251] parse_rs_func error case 1 (CMD_ADD_RS protocol module not specified) return value check
2954 BOOST_CHECK_EQUAL( ret, false );
2957 // parse_rs_func error case 2 (CMD_ADD_RS target address not specified)
2960 l7vs::l7vsadm_request::COMMAND_CODE_TAG cmd = l7vs::l7vsadm_request::CMD_ADD_RS;
2962 char* argv[] = { "l7vsadm_test",
2968 "10.144.169.86:8080"
2971 bool ret = adm.parse_rs_func_wp( cmd, argc, argv );
2973 // unit_test[252] parse_rs_func error case 2 (CMD_ADD_RS target address not specified) return value check
2974 BOOST_CHECK_EQUAL( ret, false );
2977 // parse_rs_func error case 3 (CMD_ADD_RS realserver address not specified)
2980 l7vs::l7vsadm_request::COMMAND_CODE_TAG cmd = l7vs::l7vsadm_request::CMD_ADD_RS;
2982 char* argv[] = { "l7vsadm_test",
2985 "10.144.169.87:22100",
2991 bool ret = adm.parse_rs_func_wp( cmd, argc, argv );
2993 // unit_test[253] parse_rs_func error case 3 (CMD_ADD_RS realserver address not specified) return value check
2994 BOOST_CHECK_EQUAL( ret, false );
2998 // parse_rs_func error case 4 (CMD_ADD_RS realserver any address ipv4 )
3001 l7vs::l7vsadm_request::COMMAND_CODE_TAG cmd = l7vs::l7vsadm_request::CMD_ADD_RS;
3003 char* argv[] = { "l7vsadm_test",
3006 "10.144.169.87:22100",
3016 bool ret = adm.parse_rs_func_wp( cmd, argc, argv );
3018 // unit_test[xx] parse_rs_func error case 4 (CMD_ADD_RS realserver any address ipv4) return value check
3019 BOOST_CHECK_EQUAL( ret, false );
3023 // parse_rs_func error case 5 (CMD_ADD_RS realserver any address ipv6 )
3026 l7vs::l7vsadm_request::COMMAND_CODE_TAG cmd = l7vs::l7vsadm_request::CMD_ADD_RS;
3028 char* argv[] = { "l7vsadm_test",
3031 "10.144.169.87:22100",
3041 bool ret = adm.parse_rs_func_wp( cmd, argc, argv );
3043 // unit_test[xx] parse_rs_func error case 5 (CMD_ADD_RS realserver any address ipv6) return value check
3044 BOOST_CHECK_EQUAL( ret, false );
3047 BOOST_MESSAGE( "----- parse_rs_func_test end -----" );
3051 void parse_opt_replication_switch_func_test(){
3052 BOOST_MESSAGE( "----- parse_opt_replication_switch_func_test start -----" );
3054 // parse_opt_replication_switch_func normal case 1 (replication start)
3059 char* argv[] = { "l7vsadm_test", "-R", "-s", "start" };
3061 bool ret = adm.parse_opt_replication_switch_func_wp( pos, argc, argv );
3063 // unit_test[254] parse_opt_replication_switch_func normal case 1 (replication start) return value check
3064 BOOST_CHECK_EQUAL( ret, true );
3065 // unit_test[255] parse_opt_replication_switch_func normal case 1 (replication start) replication command check
3066 BOOST_CHECK_EQUAL( adm.get_request().replication_command, l7vs::l7vsadm_request::REP_START );
3069 // parse_opt_replication_switch_func normal case 2 (replication stop)
3074 char* argv[] = { "l7vsadm_test", "-R", "-s", "stop" };
3076 bool ret = adm.parse_opt_replication_switch_func_wp( pos, argc, argv );
3078 // unit_test[256] parse_opt_replication_switch_func normal case 2 (replication stop) return value check
3079 BOOST_CHECK_EQUAL( ret, true );
3080 // unit_test[257] parse_opt_replication_switch_func normal case 2 (replication stop) replication command check
3081 BOOST_CHECK_EQUAL( adm.get_request().replication_command, l7vs::l7vsadm_request::REP_STOP );
3084 // parse_opt_replication_switch_func error case 1 (invalid switch option)
3089 char* argv[] = { "l7vsadm_test", "-R", "-s", "end" };
3091 bool ret = adm.parse_opt_replication_switch_func_wp( pos, argc, argv );
3093 // unit_test[258] parse_opt_replication_switch_func error case 1 (invalid switch option) return value check
3094 BOOST_CHECK_EQUAL( ret, false );
3097 // parse_opt_replication_switch_func error case 2 (no switch option)
3102 char* argv[] = { "l7vsadm_test", "-R", "-s" };
3104 bool ret = adm.parse_opt_replication_switch_func_wp( pos, argc, argv );
3106 // unit_test[259] parse_opt_replication_switch_func error case 2 (no switch option) return value check
3107 BOOST_CHECK_EQUAL( ret, false );
3110 BOOST_MESSAGE( "----- parse_opt_replication_switch_func_test end -----" );
3114 void parse_opt_replication_force_func_test(){
3115 BOOST_MESSAGE( "----- parse_opt_replication_force_func_test start -----" );
3117 // parse_opt_replication_force_func normal case 1
3122 char* argv[] = { "l7vsadm_test", "-R", "-f" };
3124 bool ret = adm.parse_opt_replication_force_func_wp( pos, argc, argv );
3126 // unit_test[260] parse_opt_replication_force_func normal case 1 return value check
3127 BOOST_CHECK_EQUAL( ret, true );
3128 // unit_test[261] parse_opt_replication_force_func normal case 1 replication command check
3129 BOOST_CHECK_EQUAL( adm.get_request().replication_command, l7vs::l7vsadm_request::REP_FORCE );
3132 BOOST_MESSAGE( "----- parse_opt_replication_force_func_test end -----" );
3136 void parse_opt_replication_dump_func_test(){
3137 BOOST_MESSAGE( "----- parse_opt_replication_dump_func_test start -----" );
3139 // parse_opt_replication_dump_func normal case 1
3144 char* argv[] = { "l7vsadm_test", "-R", "-d" };
3146 bool ret = adm.parse_opt_replication_dump_func_wp( pos, argc, argv );
3148 // unit_test[262] parse_opt_replication_dump_func normal case 1 return value check
3149 BOOST_CHECK_EQUAL( ret, true );
3150 // unit_test[263] parse_opt_replication_dump_func normal case 1 replication command check
3151 BOOST_CHECK_EQUAL( adm.get_request().replication_command, l7vs::l7vsadm_request::REP_DUMP );
3154 BOOST_MESSAGE( "----- parse_opt_replication_dump_func_test end -----" );
3158 void parse_replication_func_test(){
3159 BOOST_MESSAGE( "----- parse_replication_func_test start -----" );
3161 // parse_replication_func normal case 1 (replication start)
3164 l7vs::l7vsadm_request::COMMAND_CODE_TAG cmd = l7vs::l7vsadm_request::CMD_REPLICATION;
3166 char* argv[] = { "l7vsadm_test", "-R", "-s", "start" };
3168 bool ret = adm.parse_replication_func_wp( cmd, argc, argv );
3170 // unit_test[264] parse_replication_func normal case 1 (replication start) return value check
3171 BOOST_CHECK_EQUAL( ret, true );
3172 // unit_test[265] parse_replication_func normal case 1 (replication start) request command check
3173 BOOST_CHECK_EQUAL( adm.get_request().command, l7vs::l7vsadm_request::CMD_REPLICATION );
3174 // unit_test[266] parse_replication_func normal case 1 (replication start) replication command check
3175 BOOST_CHECK_EQUAL( adm.get_request().replication_command, l7vs::l7vsadm_request::REP_START );
3178 // parse_replication_func normal case 2 (replication stop)
3181 l7vs::l7vsadm_request::COMMAND_CODE_TAG cmd = l7vs::l7vsadm_request::CMD_REPLICATION;
3183 char* argv[] = { "l7vsadm_test", "-R", "-s", "stop" };
3185 bool ret = adm.parse_replication_func_wp( cmd, argc, argv );
3187 // unit_test[267] parse_replication_func normal case 2 (replication stop) return value check
3188 BOOST_CHECK_EQUAL( ret, true );
3189 // unit_test[268] parse_replication_func normal case 2 (replication stop) request command check
3190 BOOST_CHECK_EQUAL( adm.get_request().command, l7vs::l7vsadm_request::CMD_REPLICATION );
3191 // unit_test[269] parse_replication_func normal case 2 (replication stop) replication command check
3192 BOOST_CHECK_EQUAL( adm.get_request().replication_command, l7vs::l7vsadm_request::REP_STOP );
3195 // parse_replication_func normal case 3 (replication force)
3198 l7vs::l7vsadm_request::COMMAND_CODE_TAG cmd = l7vs::l7vsadm_request::CMD_REPLICATION;
3200 char* argv[] = { "l7vsadm_test", "-R", "-f" };
3202 bool ret = adm.parse_replication_func_wp( cmd, argc, argv );
3204 // unit_test[270] parse_replication_func normal case 3 (replication force) return value check
3205 BOOST_CHECK_EQUAL( ret, true );
3206 // unit_test[271] parse_replication_func normal case 3 (replication force) request command check
3207 BOOST_CHECK_EQUAL( adm.get_request().command, l7vs::l7vsadm_request::CMD_REPLICATION );
3208 // unit_test[272] parse_replication_func normal case 3 (replication force) replication command check
3209 BOOST_CHECK_EQUAL( adm.get_request().replication_command, l7vs::l7vsadm_request::REP_FORCE );
3212 // parse_replication_func normal case 4 (replication dump)
3215 l7vs::l7vsadm_request::COMMAND_CODE_TAG cmd = l7vs::l7vsadm_request::CMD_REPLICATION;
3217 char* argv[] = { "l7vsadm_test", "-R", "-d" };
3219 bool ret = adm.parse_replication_func_wp( cmd, argc, argv );
3221 // unit_test[273] parse_replication_func normal case 4 (replication dump) return value check
3222 BOOST_CHECK_EQUAL( ret, true );
3223 // unit_test[274] parse_replication_func normal case 4 (replication dump) request command check
3224 BOOST_CHECK_EQUAL( adm.get_request().command, l7vs::l7vsadm_request::CMD_REPLICATION );
3225 // unit_test[275] parse_replication_func normal case 4 (replication dump) replication command check
3226 BOOST_CHECK_EQUAL( adm.get_request().replication_command, l7vs::l7vsadm_request::REP_DUMP );
3229 // parse_replication_func error case 1 (replication command duplicate)
3232 l7vs::l7vsadm_request::COMMAND_CODE_TAG cmd = l7vs::l7vsadm_request::CMD_REPLICATION;
3234 char* argv[] = { "l7vsadm_test", "-R", "-f", "-d" };
3236 bool ret = adm.parse_replication_func_wp( cmd, argc, argv );
3238 // unit_test[276] parse_replication_func error case 1 (command duplicate) return value check
3239 BOOST_CHECK_EQUAL( ret, false );
3242 // parse_replication_func error case 2 (no replication command)
3245 l7vs::l7vsadm_request::COMMAND_CODE_TAG cmd = l7vs::l7vsadm_request::CMD_REPLICATION;
3247 char* argv[] = { "l7vsadm_test", "-R" };
3249 bool ret = adm.parse_replication_func_wp( cmd, argc, argv );
3251 // unit_test[277] parse_replication_func error case 2 (no replication command) return value check
3252 BOOST_CHECK_EQUAL( ret, false );
3255 BOOST_MESSAGE( "----- parse_replication_func_test end -----" );
3259 void parse_opt_log_category_func_test(){
3260 BOOST_MESSAGE( "----- parse_opt_log_category_func_test start -----" );
3262 // parse_opt_log_category_func normal case 1
3267 char* argv[] = { "l7vsadm_test", "-L", "-c", "l7vsd_network" };
3269 bool ret = adm.parse_opt_log_category_func_wp( pos, argc, argv );
3271 // unit_test[278] parse_opt_log_category_func normal case 1 return value check
3272 BOOST_CHECK_EQUAL( ret, true );
3273 // unit_test[279] parse_opt_log_category_func normal case 1 logcategory check
3274 BOOST_CHECK_EQUAL( adm.get_request().log_category, l7vs::LOG_CAT_L7VSD_NETWORK );
3277 // parse_opt_log_category_func error case 1 (invalid logcategory value)
3282 char* argv[] = { "l7vsadm_test", "-L", "-c", "l7vsd" };
3284 bool ret = adm.parse_opt_log_category_func_wp( pos, argc, argv );
3286 // unit_test[280] parse_opt_log_category_func error case 1 (invalid logcategory value) return value check
3287 BOOST_CHECK_EQUAL( ret, false );
3290 // parse_opt_log_category_func error case 2 (no logcategory value)
3295 char* argv[] = { "l7vsadm_test", "-L", "-c" };
3297 bool ret = adm.parse_opt_log_category_func_wp( pos, argc, argv );
3299 // unit_test[281] parse_opt_log_category_func error case 2 (no logcategory value) return value check
3300 BOOST_CHECK_EQUAL( ret, false );
3303 BOOST_MESSAGE( "----- parse_opt_log_category_func_test end -----" );
3307 void parse_opt_log_level_func_test(){
3308 BOOST_MESSAGE( "----- parse_opt_log_level_func_test start -----" );
3310 // parse_opt_log_level_func normal case 1
3315 char* argv[] = { "l7vsadm_test", "-L", "-l", "error" };
3317 bool ret = adm.parse_opt_log_level_func_wp( pos, argc, argv );
3319 // unit_test[282] parse_opt_log_level_func normal case 1 return value check
3320 BOOST_CHECK_EQUAL( ret, true );
3321 // unit_test[283] parse_opt_log_level_func normal case 1 loglevel check
3322 BOOST_CHECK_EQUAL( adm.get_request().log_level, l7vs::LOG_LV_ERROR );
3325 // parse_opt_log_level_func error case 1 (invalid loglevel value)
3330 char* argv[] = { "l7vsadm_test", "-L", "-l", "l7vsd" };
3332 bool ret = adm.parse_opt_log_level_func_wp( pos, argc, argv );
3334 // unit_test[284] parse_opt_log_level_func error case 1 (invalid loglevel value) return value check
3335 BOOST_CHECK_EQUAL( ret, false );
3338 // parse_opt_log_level_func error case 2 (no loglevel value)
3343 char* argv[] = { "l7vsadm_test", "-L", "-l" };
3345 bool ret = adm.parse_opt_log_level_func_wp( pos, argc, argv );
3347 // unit_test[285] parse_opt_log_level_func error case 2 (no loglevel value) return value check
3348 BOOST_CHECK_EQUAL( ret, false );
3351 BOOST_MESSAGE( "----- parse_opt_log_level_func_test end -----" );
3355 void parse_log_func_test(){
3356 BOOST_MESSAGE( "----- parse_log_func_test start -----" );
3358 // parse_log_func normal case 1
3361 l7vs::l7vsadm_request::COMMAND_CODE_TAG cmd = l7vs::l7vsadm_request::CMD_LOG;
3363 char* argv[] = { "l7vsadm_test",
3371 bool ret = adm.parse_log_func_wp( cmd, argc, argv );
3373 // unit_test[286] parse_log_func normal case 1 return value check
3374 BOOST_CHECK_EQUAL( ret, true );
3375 // unit_test[287] parse_log_func normal case 1 request command check
3376 BOOST_CHECK_EQUAL( adm.get_request().command, l7vs::l7vsadm_request::CMD_LOG );
3377 // unit_test[288] parse_log_func normal case 1 logcategory check
3378 BOOST_CHECK_EQUAL( adm.get_request().log_category, l7vs::LOG_CAT_L7VSD_NETWORK );
3379 // unit_test[289] parse_log_func normal case 1 logcategory check
3380 BOOST_CHECK_EQUAL( adm.get_request().log_level, l7vs::LOG_LV_DEBUG );
3383 // parse_log_func error case 1 (no logcategory)
3386 l7vs::l7vsadm_request::COMMAND_CODE_TAG cmd = l7vs::l7vsadm_request::CMD_LOG;
3388 char* argv[] = { "l7vsadm_test",
3394 bool ret = adm.parse_log_func_wp( cmd, argc, argv );
3396 // unit_test[290] parse_log_func error case 1 (no logcategory) return value check
3397 BOOST_CHECK_EQUAL( ret, false );
3400 // parse_log_func error case 2 (no loglevel)
3403 l7vs::l7vsadm_request::COMMAND_CODE_TAG cmd = l7vs::l7vsadm_request::CMD_LOG;
3405 char* argv[] = { "l7vsadm_test",
3411 bool ret = adm.parse_log_func_wp( cmd, argc, argv );
3413 // unit_test[291] parse_log_func error case 2 (no loglevel) return value check
3414 BOOST_CHECK_EQUAL( ret, false );
3417 BOOST_MESSAGE( "----- parse_log_func_test end -----" );
3421 void parse_opt_snmp_log_category_func_test(){
3422 BOOST_MESSAGE( "----- parse_opt_snmp_log_category_func_test start -----" );
3424 // parse_opt_snmp_log_category_func normal case 1
3429 char* argv[] = { "l7vsadm_test", "-S", "-c", "snmpagent_start_stop" };
3431 bool ret = adm.parse_opt_snmp_log_category_func_wp( pos, argc, argv );
3433 // unit_test[292] parse_opt_snmp_log_category_func normal case 1 return value check
3434 BOOST_CHECK_EQUAL( ret, true );
3435 // unit_test[293] parse_opt_snmp_log_category_func normal case 1 logcategory check
3436 BOOST_CHECK_EQUAL( adm.get_request().snmp_log_category, l7vs::LOG_CAT_SNMPAGENT_START_STOP );
3439 // parse_opt_snmp_log_category_func error case 1 (invalid logcategory value)
3444 char* argv[] = { "l7vsadm_test", "-S", "-c", "snmpagent" };
3446 bool ret = adm.parse_opt_snmp_log_category_func_wp( pos, argc, argv );
3448 // unit_test[294] parse_opt_snmp_log_category_func error case 1 (invalid logcategory value) return value check
3449 BOOST_CHECK_EQUAL( ret, false );
3452 // parse_opt_snmp_log_category_func error case 2 (no logcategory value)
3457 char* argv[] = { "l7vsadm_test", "-S", "-c" };
3459 bool ret = adm.parse_opt_snmp_log_category_func_wp( pos, argc, argv );
3461 // unit_test[295] parse_opt_snmp_log_category_func error case 2 (no logcategory value) return value check
3462 BOOST_CHECK_EQUAL( ret, false );
3465 BOOST_MESSAGE( "----- parse_opt_snmp_log_category_func_test end -----" );
3469 void parse_opt_snmp_log_level_func_test(){
3470 BOOST_MESSAGE( "----- parse_opt_snmp_log_level_func_test start -----" );
3472 // parse_opt_snmp_log_level_func normal case 1
3477 char* argv[] = { "l7vsadm_test", "-S", "-l", "info" };
3479 bool ret = adm.parse_opt_snmp_log_level_func_wp( pos, argc, argv );
3481 // unit_test[296] parse_opt_snmp_log_level_func normal case 1 return value check
3482 BOOST_CHECK_EQUAL( ret, true );
3483 // unit_test[297] parse_opt_snmp_log_level_func normal case 1 loglevel check
3484 BOOST_CHECK_EQUAL( adm.get_request().snmp_log_level, l7vs::LOG_LV_INFO );
3487 // parse_opt_snmp_log_level_func error case 1 (invalid loglevel value)
3492 char* argv[] = { "l7vsadm_test", "-S", "-l", "snmpagent" };
3494 bool ret = adm.parse_opt_snmp_log_level_func_wp( pos, argc, argv );
3496 // unit_test[298] parse_opt_snmp_log_level_func error case 1 (invalid loglevel value) return value check
3497 BOOST_CHECK_EQUAL( ret, false );
3500 // parse_opt_snmp_log_level_func error case 2 (no loglevel value)
3505 char* argv[] = { "l7vsadm_test", "-S", "-l" };
3507 bool ret = adm.parse_opt_snmp_log_level_func_wp( pos, argc, argv );
3509 // unit_test[299] parse_opt_snmp_log_level_func error case 2 (no loglevel value) return value check
3510 BOOST_CHECK_EQUAL( ret, false );
3513 BOOST_MESSAGE( "----- parse_opt_snmp_log_level_func_test end -----" );
3517 void parse_snmp_func_test(){
3518 BOOST_MESSAGE( "----- parse_snmp_func_test start -----" );
3520 // parse_snmp_func normal case 1
3523 l7vs::l7vsadm_request::COMMAND_CODE_TAG cmd = l7vs::l7vsadm_request::CMD_SNMP;
3525 char* argv[] = { "l7vsadm_test",
3528 "snmpagent_start_stop",
3533 bool ret = adm.parse_snmp_func_wp( cmd, argc, argv );
3535 // unit_test[300] parse_snmp_func normal case 1 return value check
3536 BOOST_CHECK_EQUAL( ret, true );
3537 // unit_test[301] parse_snmp_func normal case 1 request command check
3538 BOOST_CHECK_EQUAL( adm.get_request().command, l7vs::l7vsadm_request::CMD_SNMP );
3539 // unit_test[302] parse_snmp_func normal case 1 logcategory check
3540 BOOST_CHECK_EQUAL( adm.get_request().snmp_log_category, l7vs::LOG_CAT_SNMPAGENT_START_STOP );
3541 // unit_test[303] parse_snmp_func normal case 1 logcategory check
3542 BOOST_CHECK_EQUAL( adm.get_request().snmp_log_level, l7vs::LOG_LV_WARN );
3545 // parse_snmp_func error case 1 (no logcategory)
3548 l7vs::l7vsadm_request::COMMAND_CODE_TAG cmd = l7vs::l7vsadm_request::CMD_SNMP;
3550 char* argv[] = { "l7vsadm_test",
3556 bool ret = adm.parse_snmp_func_wp( cmd, argc, argv );
3558 // unit_test[304] parse_snmp_func error case 1 (no logcategory) return value check
3559 BOOST_CHECK_EQUAL( ret, false );
3562 // parse_snmp_func error case 2 (no loglevel)
3565 l7vs::l7vsadm_request::COMMAND_CODE_TAG cmd = l7vs::l7vsadm_request::CMD_SNMP;
3567 char* argv[] = { "l7vsadm_test",
3570 "snmpagent_start_stop"
3573 bool ret = adm.parse_snmp_func_wp( cmd, argc, argv );
3575 // unit_test[305] parse_snmp_func error case 2 (no loglevel) return value check
3576 BOOST_CHECK_EQUAL( ret, false );
3579 BOOST_MESSAGE( "----- parse_snmp_func_test end -----" );
3583 void parse_opt_parameter_reload_func_test(){
3584 BOOST_MESSAGE( "----- parse_opt_parameter_reload_func_test start -----" );
3586 // parse_opt_parameter_reload_func normal case 1
3591 char* argv[] = { "l7vsadm_test", "-P", "-r", "replication" };
3593 bool ret = adm.parse_opt_parameter_reload_func_wp( pos, argc, argv );
3595 // unit_test[306] parse_opt_parameter_reload_func normal case 1 return value check
3596 BOOST_CHECK_EQUAL( ret, true );
3597 // unit_test[307] parse_opt_parameter_reload_func normal case 1 reload_component check
3598 BOOST_CHECK_EQUAL( adm.get_request().reload_param, l7vs::PARAM_COMP_REPLICATION );
3601 // parse_opt_parameter_reload_func error case 1 (invalid reload_component value)
3606 char* argv[] = { "l7vsadm_test", "-P", "-r", "lsock" };
3608 bool ret = adm.parse_opt_parameter_reload_func_wp( pos, argc, argv );
3610 // unit_test[308] parse_opt_parameter_reload_func error case 1 (invalid reload_component value) return value check
3611 BOOST_CHECK_EQUAL( ret, false );
3614 // parse_opt_parameter_reload_func error case 2 (no reload_component value)
3619 char* argv[] = { "l7vsadm_test", "-P", "-r" };
3621 bool ret = adm.parse_opt_parameter_reload_func_wp( pos, argc, argv );
3623 // unit_test[309] parse_opt_parameter_reload_func error case 2 (no reload_component value) return value check
3624 BOOST_CHECK_EQUAL( ret, false );
3627 BOOST_MESSAGE( "----- parse_opt_parameter_reload_func_test end -----" );
3631 void parse_parameter_func_test(){
3632 BOOST_MESSAGE( "----- parse_parameter_func_test start -----" );
3634 // parse_parameter_func normal case 1
3637 l7vs::l7vsadm_request::COMMAND_CODE_TAG cmd = l7vs::l7vsadm_request::CMD_PARAMETER;
3639 char* argv[] = { "l7vsadm_test",
3645 bool ret = adm.parse_parameter_func_wp( cmd, argc, argv );
3647 // unit_test[310] parse_parameter_func normal case 1 return value check
3648 BOOST_CHECK_EQUAL( ret, true );
3649 // unit_test[311] parse_parameter_func normal case 1 request command check
3650 BOOST_CHECK_EQUAL( adm.get_request().command, l7vs::l7vsadm_request::CMD_PARAMETER );
3651 // unit_test[312] parse_parameter_func normal case 1 reload_component check
3652 BOOST_CHECK_EQUAL( adm.get_request().reload_param, l7vs::PARAM_COMP_LOGGER );
3655 // parse_parameter_func error case 1 (no reload_component)
3658 l7vs::l7vsadm_request::COMMAND_CODE_TAG cmd = l7vs::l7vsadm_request::CMD_PARAMETER;
3660 char* argv[] = { "l7vsadm_test",
3664 bool ret = adm.parse_parameter_func_wp( cmd, argc, argv );
3666 // unit_test[313] parse_parameter_func error case 1 (no reload_component) return value check
3667 BOOST_CHECK_EQUAL( ret, false );
3670 BOOST_MESSAGE( "----- parse_parameter_func_test end -----" );
3674 void parse_opt_vs_fwdmode_func_test(){
3675 BOOST_MESSAGE( "----- parse_opt_vs_fwdmode_func_test start -----" );
3677 // parse_opt_vs_fwdmode_func normal case 1 (masq)
3682 char* argv1[] = { "l7vsadm_test", "-A", "-M" };
3683 char* argv2[] = { "l7vsadm_test", "-A", "--masq" };
3686 ret = adm.parse_opt_vs_fwdmode_func_wp( pos, argc, argv1 );
3687 BOOST_CHECK_EQUAL( ret, true );
3688 BOOST_CHECK_EQUAL( adm.get_request().vs_element.sorry_fwdmode, 1 );
3690 ret = adm.parse_opt_vs_fwdmode_func_wp( pos, argc, argv2 );
3691 BOOST_CHECK_EQUAL( ret, true );
3692 BOOST_CHECK_EQUAL( adm.get_request().vs_element.sorry_fwdmode, 1 );
3695 // parse_opt_vs_fwdmode_func normal case 2 (tproxy)
3700 char* argv1[] = { "l7vsadm_test", "-A", "-T" };
3701 char* argv2[] = { "l7vsadm_test", "-A", "--tproxy" };
3704 adm.get_request().vs_element.realserver_vector.push_back( l7vs::realserver_element() );
3706 ret = adm.parse_opt_vs_fwdmode_func_wp( pos, argc, argv1 );
3707 BOOST_CHECK_EQUAL( ret, true );
3708 BOOST_CHECK_EQUAL( adm.get_request().vs_element.sorry_fwdmode, 2 );
3710 ret = adm.parse_opt_vs_fwdmode_func_wp( pos, argc, argv2 );
3711 BOOST_CHECK_EQUAL( ret, true );
3712 BOOST_CHECK_EQUAL( adm.get_request().vs_element.sorry_fwdmode, 2 );
3715 BOOST_MESSAGE( "----- parse_opt_vs_fwdmode_func_test end -----" );
3719 void parse_opt_rs_fwdmode_func_test(){
3720 BOOST_MESSAGE( "----- parse_opt_rs_fwdmode_func_test start -----" );
3722 // parse_opt_rs_fwdmode_func normal case 1 (masq)
3727 char* argv1[] = { "l7vsadm_test", "-a", "-M" };
3728 char* argv2[] = { "l7vsadm_test", "-a", "--masq" };
3731 adm.get_request().vs_element.realserver_vector.push_back( l7vs::realserver_element() );
3733 ret = adm.parse_opt_rs_fwdmode_func_wp( pos, argc, argv1 );
3734 BOOST_CHECK_EQUAL( ret, true );
3735 BOOST_CHECK_EQUAL( adm.get_request().vs_element.realserver_vector.front().fwdmode, 1 );
3737 ret = adm.parse_opt_rs_fwdmode_func_wp( pos, argc, argv2 );
3738 BOOST_CHECK_EQUAL( ret, true );
3739 BOOST_CHECK_EQUAL( adm.get_request().vs_element.realserver_vector.front().fwdmode, 1 );
3742 // parse_opt_rs_fwdmode_func normal case 2 (tproxy)
3747 char* argv1[] = { "l7vsadm_test", "-a", "-T" };
3748 char* argv2[] = { "l7vsadm_test", "-a", "--tproxy" };
3751 adm.get_request().vs_element.realserver_vector.push_back( l7vs::realserver_element() );
3753 ret = adm.parse_opt_rs_fwdmode_func_wp( pos, argc, argv1 );
3754 BOOST_CHECK_EQUAL( ret, true );
3755 BOOST_CHECK_EQUAL( adm.get_request().vs_element.realserver_vector.front().fwdmode, 2 );
3757 ret = adm.parse_opt_rs_fwdmode_func_wp( pos, argc, argv2 );
3758 BOOST_CHECK_EQUAL( ret, true );
3759 BOOST_CHECK_EQUAL( adm.get_request().vs_element.realserver_vector.front().fwdmode, 2 );
3762 BOOST_MESSAGE( "----- parse_opt_rs_fwdmode_func_test end -----" );
3766 void execute_test(){
3767 BOOST_MESSAGE( "----- execute_test start -----" );
3769 // execute normal case 1 (no option)
3773 char* argv[] = { "l7vsadm_test" };
3775 test_request = l7vs::l7vsadm_request();
3776 test_response = l7vs::l7vsd_response();
3777 test_response.status = l7vs::l7vsd_response::RESPONSE_OK;
3778 test_response.virtualservice_status_list.push_back( l7vs::virtualservice_element() );
3779 test_response.virtualservice_status_list.push_back( l7vs::virtualservice_element() );
3780 typedef std::list< l7vs::virtualservice_element > vse_list_type;
3781 for( vse_list_type::iterator itr = test_response.virtualservice_status_list.begin();
3782 itr != test_response.virtualservice_status_list.end();
3784 itr->protocol_module_name = "protomod";
3785 itr->schedule_module_name = "sched";
3786 itr->realserver_vector.push_back( l7vs::realserver_element() );
3787 itr->realserver_vector.push_back( l7vs::realserver_element() );
3790 accept_ready = false;
3791 boost::thread thd1( &server_thread );
3793 // accept ready wait
3794 //boost::mutex::scoped_lock lock( accept_mutex );
3795 //accept_condition.wait( lock );
3796 for(;;) { if(accept_ready) break; }
3798 bool ret = adm.execute_wp( argc, argv );
3801 // unit_test[314] execute normal case 1 (no option) return value check
3802 BOOST_CHECK_EQUAL( ret, true );
3803 // unit_test[315] execute normal case 1 (no option) request command check
3804 BOOST_CHECK_EQUAL( test_request.command, l7vs::l7vsadm_request::CMD_LIST );
3805 // unit_test[316] execute normal case 1 (no option) response value check
3806 BOOST_CHECK_EQUAL( adm.get_response().virtualservice_status_list.size(), 2U );
3810 // execute normal case 2 (list operation)
3814 char* argv[] = { "l7vsadm_test",
3818 test_request = l7vs::l7vsadm_request();
3819 test_response = l7vs::l7vsd_response();
3820 test_response.status = l7vs::l7vsd_response::RESPONSE_OK;
3821 test_response.virtualservice_status_list.push_back( l7vs::virtualservice_element() );
3822 test_response.virtualservice_status_list.push_back( l7vs::virtualservice_element() );
3823 typedef std::list< l7vs::virtualservice_element > vse_list_type;
3824 for( vse_list_type::iterator itr = test_response.virtualservice_status_list.begin();
3825 itr != test_response.virtualservice_status_list.end();
3827 itr->protocol_module_name = "protomod";
3828 itr->schedule_module_name = "sched";
3829 itr->realserver_vector.push_back( l7vs::realserver_element() );
3830 itr->realserver_vector.push_back( l7vs::realserver_element() );
3833 accept_ready = false;
3834 boost::thread thd1( &server_thread );
3836 //boost::mutex::scoped_lock lock( accept_mutex );
3837 //accept_condition.wait( lock );
3838 for(;;) { if(accept_ready) break; }
3840 bool ret = adm.execute_wp( argc, argv );
3843 // unit_test[317] execute normal case 2 (list operation) return value check
3844 BOOST_CHECK_EQUAL( ret, true );
3845 // unit_test[318] execute normal case 2 (list operation) request command check
3846 BOOST_CHECK_EQUAL( test_request.command, l7vs::l7vsadm_request::CMD_LIST );
3847 // unit_test[319] execute normal case 2 (list operation) response value check
3848 BOOST_CHECK_EQUAL( adm.get_response().virtualservice_status_list.size(), 2U );
3851 // execute normal case 3 (list operation numeric)
3855 char* argv[] = { "l7vsadm_test",
3860 test_request = l7vs::l7vsadm_request();
3861 test_response = l7vs::l7vsd_response();
3862 test_response.status = l7vs::l7vsd_response::RESPONSE_OK;
3863 test_response.virtualservice_status_list.push_back( l7vs::virtualservice_element() );
3864 test_response.virtualservice_status_list.push_back( l7vs::virtualservice_element() );
3865 typedef std::list< l7vs::virtualservice_element > vse_list_type;
3866 for( vse_list_type::iterator itr = test_response.virtualservice_status_list.begin();
3867 itr != test_response.virtualservice_status_list.end();
3869 itr->protocol_module_name = "protomod";
3870 itr->schedule_module_name = "sched";
3871 itr->realserver_vector.push_back( l7vs::realserver_element() );
3872 itr->realserver_vector.push_back( l7vs::realserver_element() );
3875 accept_ready = false;
3876 boost::thread thd1( &server_thread );
3878 //boost::mutex::scoped_lock lock( accept_mutex );
3879 //accept_condition.wait( lock );
3880 for(;;) { if(accept_ready) break; }
3882 bool ret = adm.execute_wp( argc, argv );
3885 // unit_test[320] execute normal case 3 (list operation numeric) return value check
3886 BOOST_CHECK_EQUAL( ret, true );
3887 // unit_test[321] execute normal case 3 (list operation numeric) request command check
3888 BOOST_CHECK_EQUAL( test_request.command, l7vs::l7vsadm_request::CMD_LIST );
3889 // unit_test[322] execute normal case 3 (list operation numeric) response value check
3890 BOOST_CHECK_EQUAL( adm.get_response().virtualservice_status_list.size(), 2U );
3894 // execute normal case 4 (list operation key)
3898 char* argv[] = { "l7vsadm_test",
3902 test_request = l7vs::l7vsadm_request();
3903 test_response = l7vs::l7vsd_response();
3904 test_response.status = l7vs::l7vsd_response::RESPONSE_OK;
3905 test_response.virtualservice_status_list.push_back( l7vs::virtualservice_element() );
3906 test_response.virtualservice_status_list.push_back( l7vs::virtualservice_element() );
3907 typedef std::list< l7vs::virtualservice_element > vse_list_type;
3908 for( vse_list_type::iterator itr = test_response.virtualservice_status_list.begin();
3909 itr != test_response.virtualservice_status_list.end();
3911 itr->protocol_module_name = "protomod";
3912 itr->schedule_module_name = "sched";
3913 itr->realserver_vector.push_back( l7vs::realserver_element() );
3914 itr->realserver_vector.push_back( l7vs::realserver_element() );
3917 accept_ready = false;
3918 boost::thread thd1( &server_thread );
3920 //boost::mutex::scoped_lock lock( accept_mutex );
3921 //accept_condition.wait( lock );
3922 for(;;) { if(accept_ready) break; }
3924 bool ret = adm.execute_wp( argc, argv );
3927 // unit_test[323] execute normal case 4 (list operation key) return value check
3928 BOOST_CHECK_EQUAL( ret, true );
3929 // unit_test[324] execute normal case 4 (list operation key) request command check
3930 BOOST_CHECK_EQUAL( test_request.command, l7vs::l7vsadm_request::CMD_LIST_KEY );
3931 // unit_test[325] execute normal case 4 (list operation key) response value check
3932 BOOST_CHECK_EQUAL( adm.get_response().virtualservice_status_list.size(), 2U );
3935 // execute normal case 5 (list operation verbose)
3939 char* argv[] = { "l7vsadm_test",
3943 test_request = l7vs::l7vsadm_request();
3944 test_response = l7vs::l7vsd_response();
3945 test_response.status = l7vs::l7vsd_response::RESPONSE_OK;
3946 test_response.virtualservice_status_list.push_back( l7vs::virtualservice_element() );
3947 test_response.virtualservice_status_list.push_back( l7vs::virtualservice_element() );
3948 typedef std::list< l7vs::virtualservice_element > vse_list_type;
3949 for( vse_list_type::iterator itr = test_response.virtualservice_status_list.begin();
3950 itr != test_response.virtualservice_status_list.end();
3952 itr->protocol_module_name = "protomod";
3953 itr->schedule_module_name = "sched";
3954 itr->realserver_vector.push_back( l7vs::realserver_element() );
3955 itr->realserver_vector.push_back( l7vs::realserver_element() );
3958 accept_ready = false;
3959 boost::thread thd1( &server_thread );
3961 //boost::mutex::scoped_lock lock( accept_mutex );
3962 //accept_condition.wait( lock );
3963 for(;;) { if(accept_ready) break; }
3965 bool ret = adm.execute_wp( argc, argv );
3968 // unit_test[326] execute normal case 5 (list operation verbose) return value check
3969 BOOST_CHECK_EQUAL( ret, true );
3970 // unit_test[327] execute normal case 5 (list operation verbose) request command check
3971 BOOST_CHECK_EQUAL( test_request.command, l7vs::l7vsadm_request::CMD_LIST_VERBOSE );
3972 // unit_test[328] execute normal case 5 (list operation verbose) response value check
3973 BOOST_CHECK_EQUAL( adm.get_response().virtualservice_status_list.size(), 2U );
3976 // execute normal case 6 (vs operation add-vs)
3980 char* argv[] = { "l7vsadm_test",
3983 "10.144.169.87:22100",
3992 "10.144.169.86:8080",
3999 test_request = l7vs::l7vsadm_request();
4000 test_response = l7vs::l7vsd_response();
4001 test_response.status = l7vs::l7vsd_response::RESPONSE_OK;
4003 accept_ready = false;
4004 boost::thread thd1( &server_thread );
4006 //boost::mutex::scoped_lock lock( accept_mutex );
4007 //accept_condition.wait( lock );
4008 for(;;) { if(accept_ready) break; }
4010 bool ret = adm.execute_wp( argc, argv );
4013 // unit_test[329] execute normal case 6 (vs operation add-vs) return value check
4014 BOOST_CHECK_EQUAL( ret, true );
4015 // unit_test[330] execute normal case 6 (vs operation add-vs) request command check
4016 BOOST_CHECK_EQUAL( test_request.command, l7vs::l7vsadm_request::CMD_ADD_VS );
4017 // unit_test[331] execute normal case 6 (vs operation add-vs) tcp_accept_endpoint check
4018 boost::asio::ip::tcp::endpoint tcp_acc_ep = string_to_endpoint<boost::asio::ip::tcp>( "10.144.169.87:22100" );
4019 BOOST_CHECK_EQUAL( test_request.vs_element.tcp_accept_endpoint, tcp_acc_ep );
4020 // unit_test[332] execute normal case 6 (vs operation add-vs) protocol module name check
4021 BOOST_CHECK_EQUAL( test_request.vs_element.protocol_module_name, "cinsert" );
4022 // unit_test[333] execute normal case 6 (vs operation add-vs) protocol module arg check
4023 BOOST_CHECK_EQUAL( test_request.vs_element.protocol_args.front(), "mod_arg" );
4024 // unit_test[334] execute normal case 6 (vs operation add-vs) schedule module name check
4025 BOOST_CHECK_EQUAL( test_request.vs_element.schedule_module_name, "lc" );
4026 // unit_test[335] execute normal case 6 (vs operation add-vs) sorry_maxconnection check
4027 BOOST_CHECK_EQUAL( test_request.vs_element.sorry_maxconnection, 50 );
4028 // unit_test[336] execute normal case 6 (vs operation add-vs) sorry_endpoint check
4029 boost::asio::ip::tcp::endpoint sorry_ep = string_to_endpoint<boost::asio::ip::tcp>( "10.144.169.86:8080" );
4030 BOOST_CHECK_EQUAL( test_request.vs_element.sorry_endpoint, sorry_ep );
4031 // unit_test[337] execute normal case 6 (vs operation add-vs) qos_upstream check
4032 BOOST_CHECK_EQUAL( test_request.vs_element.qos_upstream, ( 100000000ULL / 8 ) );
4033 // unit_test[338] execute normal case 6 (vs operation add-vs) qos_downstream check
4034 BOOST_CHECK_EQUAL( test_request.vs_element.qos_downstream, ( 200000000ULL / 8 ) );
4037 // execute normal case 7 (vs operation edit-vs)
4041 char* argv[] = { "l7vsadm_test",
4044 "10.144.169.87:22100",
4053 "10.144.169.86:8080",
4062 test_request = l7vs::l7vsadm_request();
4063 test_response = l7vs::l7vsd_response();
4064 test_response.status = l7vs::l7vsd_response::RESPONSE_OK;
4066 accept_ready = false;
4067 boost::thread thd1( &server_thread );
4069 //boost::mutex::scoped_lock lock( accept_mutex );
4070 //accept_condition.wait( lock );
4071 for(;;) { if(accept_ready) break; }
4073 bool ret = adm.execute_wp( argc, argv );
4076 // unit_test[339] execute normal case 7 (vs operation edit-vs) return value check
4077 BOOST_CHECK_EQUAL( ret, true );
4078 // unit_test[340] execute normal case 7 (vs operation edit-vs) request command check
4079 BOOST_CHECK_EQUAL( test_request.command, l7vs::l7vsadm_request::CMD_EDIT_VS );
4080 // unit_test[341] execute normal case 7 (vs operation edit-vs) tcp_accept_endpoint check
4081 boost::asio::ip::tcp::endpoint tcp_acc_ep = string_to_endpoint<boost::asio::ip::tcp>( "10.144.169.87:22100" );
4082 BOOST_CHECK_EQUAL( test_request.vs_element.tcp_accept_endpoint, tcp_acc_ep );
4083 // unit_test[342] execute normal case 7 (vs operation edit-vs) protocol module name check
4084 BOOST_CHECK_EQUAL( test_request.vs_element.protocol_module_name, "cinsert" );
4085 // unit_test[343] execute normal case 7 (vs operation edit-vs) protocol module arg check
4086 BOOST_CHECK_EQUAL( test_request.vs_element.protocol_args.front(), "mod_arg" );
4087 // unit_test[344] execute normal case 7 (vs operation edit-vs) schedule module name check
4088 BOOST_CHECK_EQUAL( test_request.vs_element.schedule_module_name, "rr" );
4089 // unit_test[345] execute normal case 7 (vs operation edit-vs) sorry_maxconnection check
4090 BOOST_CHECK_EQUAL( test_request.vs_element.sorry_maxconnection, 50 );
4091 // unit_test[346] execute normal case 7 (vs operation edit-vs) sorry_endpoint check
4092 boost::asio::ip::tcp::endpoint sorry_ep = string_to_endpoint<boost::asio::ip::tcp>( "10.144.169.86:8080" );
4093 BOOST_CHECK_EQUAL( test_request.vs_element.sorry_endpoint, sorry_ep );
4094 // unit_test[347] execute normal case 7 (vs operation edit-vs) sorry_flag check
4095 BOOST_CHECK_EQUAL( adm.get_request().vs_element.sorry_flag, true );
4096 // unit_test[348] execute normal case 7 (vs operation edit-vs) qos_upstream check
4097 BOOST_CHECK_EQUAL( test_request.vs_element.qos_upstream, ( 100000000ULL / 8 ) );
4098 // unit_test[349] execute normal case 7 (vs operation edit-vs) qos_downstream check
4099 BOOST_CHECK_EQUAL( test_request.vs_element.qos_downstream, ( 200000000ULL / 8 ) );
4102 // execute normal case 8 (vs operation del-vs)
4106 char* argv[] = { "l7vsadm_test",
4109 "10.144.169.87:22100",
4115 test_request = l7vs::l7vsadm_request();
4116 test_response = l7vs::l7vsd_response();
4117 test_response.status = l7vs::l7vsd_response::RESPONSE_OK;
4119 accept_ready = false;
4120 boost::thread thd1( &server_thread );
4122 //boost::mutex::scoped_lock lock( accept_mutex );
4123 //accept_condition.wait( lock );
4124 for(;;) { if(accept_ready) break; }
4126 bool ret = adm.execute_wp( argc, argv );
4129 // unit_test[350] execute normal case 8 (vs operation del-vs) return value check
4130 BOOST_CHECK_EQUAL( ret, true );
4131 // unit_test[351] execute normal case 8 (vs operation del-vs) request command check
4132 BOOST_CHECK_EQUAL( test_request.command, l7vs::l7vsadm_request::CMD_DEL_VS );
4133 // unit_test[352] execute normal case 8 (vs operation del-vs) tcp_accept_endpoint check
4134 boost::asio::ip::tcp::endpoint tcp_acc_ep = string_to_endpoint<boost::asio::ip::tcp>( "10.144.169.87:22100" );
4135 BOOST_CHECK_EQUAL( adm.get_request().vs_element.tcp_accept_endpoint, tcp_acc_ep );
4136 // unit_test[353] execute normal case 8 (vs operation del-vs) protocol module name check
4137 BOOST_CHECK_EQUAL( adm.get_request().vs_element.protocol_module_name, "cinsert" );
4138 // unit_test[354] execute normal case 8 (vs operation del-vs) protocol module arg check
4139 BOOST_CHECK_EQUAL( adm.get_request().vs_element.protocol_args.front(), "mod_arg" );
4142 // execute normal case 9 (vs operation flush-vs)
4146 char* argv[] = { "l7vsadm_test",
4150 test_request = l7vs::l7vsadm_request();
4151 test_response = l7vs::l7vsd_response();
4152 test_response.status = l7vs::l7vsd_response::RESPONSE_OK;
4154 accept_ready = false;
4155 boost::thread thd1( &server_thread );
4157 //boost::mutex::scoped_lock lock( accept_mutex );
4158 //accept_condition.wait( lock );
4159 for(;;) { if(accept_ready) break; }
4161 bool ret = adm.execute_wp( argc, argv );
4164 // unit_test[355] execute normal case 9 (vs operation flush-vs) return value check
4165 BOOST_CHECK_EQUAL( ret, true );
4166 // unit_test[356] execute normal case 9 (vs operation flush-vs) request command check
4167 BOOST_CHECK_EQUAL( test_request.command, l7vs::l7vsadm_request::CMD_FLUSH_VS );
4170 // execute normal case 10 (rs operation add-rs)
4174 char* argv[] = { "l7vsadm_test",
4177 "10.144.169.87:22100",
4182 "10.144.169.86:8080",
4187 test_request = l7vs::l7vsadm_request();
4188 test_response = l7vs::l7vsd_response();
4189 test_response.status = l7vs::l7vsd_response::RESPONSE_OK;
4191 accept_ready = false;
4192 boost::thread thd1( &server_thread );
4194 //boost::mutex::scoped_lock lock( accept_mutex );
4195 //accept_condition.wait( lock );
4196 for(;;) { if(accept_ready) break; }
4198 bool ret = adm.execute_wp( argc, argv );
4201 // unit_test[357] execute normal case 10 (rs operation add-rs) return value check
4202 BOOST_CHECK_EQUAL( ret, true );
4203 // unit_test[358] execute normal case 10 (rs operation add-rs) request command check
4204 BOOST_CHECK_EQUAL( test_request.command, l7vs::l7vsadm_request::CMD_ADD_RS );
4205 // unit_test[359] execute normal case 10 (rs operation add-rs) tcp_accept_endpoint check
4206 boost::asio::ip::tcp::endpoint tcp_acc_ep = string_to_endpoint<boost::asio::ip::tcp>( "10.144.169.87:22100" );
4207 BOOST_CHECK_EQUAL( test_request.vs_element.tcp_accept_endpoint, tcp_acc_ep );
4208 // unit_test[360] execute normal case 10 (rs operation add-rs) protocol module name check
4209 BOOST_CHECK_EQUAL( test_request.vs_element.protocol_module_name, "cinsert" );
4210 // unit_test[361] execute normal case 10 (rs operation add-rs) protocol module arg check
4211 BOOST_CHECK_EQUAL( test_request.vs_element.protocol_args.front(), "mod_arg" );
4212 // unit_test[362] execute normal case 10 (rs operation add-rs) realserver endpoint check
4213 boost::asio::ip::tcp::endpoint rs_ep = string_to_endpoint<boost::asio::ip::tcp>( "10.144.169.86:8080" );
4214 BOOST_CHECK_EQUAL( test_request.vs_element.realserver_vector.front().tcp_endpoint, rs_ep );
4215 // unit_test[363] execute normal case 10 (rs operation add-rs) weight check
4216 BOOST_CHECK_EQUAL( test_request.vs_element.realserver_vector.front().weight, 10 );
4219 // execute normal case 11 (rs operation edit-rs)
4223 char* argv[] = { "l7vsadm_test",
4226 "10.144.169.87:22100",
4231 "10.144.169.86:8080",
4236 test_request = l7vs::l7vsadm_request();
4237 test_response = l7vs::l7vsd_response();
4238 test_response.status = l7vs::l7vsd_response::RESPONSE_OK;
4240 accept_ready = false;
4241 boost::thread thd1( &server_thread );
4243 //boost::mutex::scoped_lock lock( accept_mutex );
4244 //accept_condition.wait( lock );
4245 for(;;) { if(accept_ready) break; }
4247 bool ret = adm.execute_wp( argc, argv );
4250 // unit_test[364] execute normal case 11 (rs operation edit-rs) return value check
4251 BOOST_CHECK_EQUAL( ret, true );
4252 // unit_test[365] execute normal case 11 (rs operation edit-rs) request command check
4253 BOOST_CHECK_EQUAL( test_request.command, l7vs::l7vsadm_request::CMD_EDIT_RS );
4254 // unit_test[366] execute normal case 11 (rs operation edit-rs) tcp_accept_endpoint check
4255 boost::asio::ip::tcp::endpoint tcp_acc_ep = string_to_endpoint<boost::asio::ip::tcp>( "10.144.169.87:22100" );
4256 BOOST_CHECK_EQUAL( test_request.vs_element.tcp_accept_endpoint, tcp_acc_ep );
4257 // unit_test[367] execute normal case 11 (rs operation edit-rs) protocol module name check
4258 BOOST_CHECK_EQUAL( test_request.vs_element.protocol_module_name, "cinsert" );
4259 // unit_test[368] execute normal case 11 (rs operation edit-rs) protocol module arg check
4260 BOOST_CHECK_EQUAL( test_request.vs_element.protocol_args.front(), "mod_arg" );
4261 // unit_test[369] execute normal case 11 (rs operation edit-rs) realserver endpoint check
4262 boost::asio::ip::tcp::endpoint rs_ep = string_to_endpoint<boost::asio::ip::tcp>( "10.144.169.86:8080" );
4263 BOOST_CHECK_EQUAL( test_request.vs_element.realserver_vector.front().tcp_endpoint, rs_ep );
4264 // unit_test[370] execute normal case 11 (rs operation edit-rs) weight check
4265 BOOST_CHECK_EQUAL( test_request.vs_element.realserver_vector.front().weight, 20 );
4268 // execute normal case 12 (rs operation del-rs)
4272 char* argv[] = { "l7vsadm_test",
4275 "10.144.169.87:22100",
4280 "10.144.169.86:8080"
4283 test_request = l7vs::l7vsadm_request();
4284 test_response = l7vs::l7vsd_response();
4285 test_response.status = l7vs::l7vsd_response::RESPONSE_OK;
4287 accept_ready = false;
4288 boost::thread thd1( &server_thread );
4290 //boost::mutex::scoped_lock lock( accept_mutex );
4291 //accept_condition.wait( lock );
4292 for(;;) { if(accept_ready) break; }
4294 bool ret = adm.execute_wp( argc, argv );
4297 // unit_test[371] execute normal case 12 (rs operation del-rs) return value check
4298 BOOST_CHECK_EQUAL( ret, true );
4299 // unit_test[372] execute normal case 12 (rs operation del-rs) request command check
4300 BOOST_CHECK_EQUAL( test_request.command, l7vs::l7vsadm_request::CMD_DEL_RS );
4301 // unit_test[373] execute normal case 12 (rs operation del-rs) tcp_accept_endpoint check
4302 boost::asio::ip::tcp::endpoint tcp_acc_ep = string_to_endpoint<boost::asio::ip::tcp>( "10.144.169.87:22100" );
4303 BOOST_CHECK_EQUAL( test_request.vs_element.tcp_accept_endpoint, tcp_acc_ep );
4304 // unit_test[374] execute normal case 12 (rs operation del-rs) protocol module name check
4305 BOOST_CHECK_EQUAL( test_request.vs_element.protocol_module_name, "cinsert" );
4306 // unit_test[375] execute normal case 12 (rs operation del-rs) protocol module arg check
4307 BOOST_CHECK_EQUAL( test_request.vs_element.protocol_args.front(), "mod_arg" );
4308 // unit_test[376] execute normal case 12 (rs operation del-rs) realserver endpoint check
4309 boost::asio::ip::tcp::endpoint rs_ep = string_to_endpoint<boost::asio::ip::tcp>( "10.144.169.86:8080" );
4310 BOOST_CHECK_EQUAL( test_request.vs_element.realserver_vector.front().tcp_endpoint, rs_ep );
4313 // execute normal case 13 (replication operation)
4317 char* argv[] = { "l7vsadm_test",
4323 test_request = l7vs::l7vsadm_request();
4324 test_response = l7vs::l7vsd_response();
4325 test_response.status = l7vs::l7vsd_response::RESPONSE_OK;
4327 accept_ready = false;
4328 boost::thread thd1( &server_thread );
4330 //boost::mutex::scoped_lock lock( accept_mutex );
4331 //accept_condition.wait( lock );
4332 for(;;) { if(accept_ready) break; }
4334 bool ret = adm.execute_wp( argc, argv );
4337 // unit_test[377] execute normal case 13 (replication operation) return value check
4338 BOOST_CHECK_EQUAL( ret, true );
4339 // unit_test[378] execute normal case 13 (replication operation) request command check
4340 BOOST_CHECK_EQUAL( test_request.command, l7vs::l7vsadm_request::CMD_REPLICATION );
4341 // unit_test[379] execute normal case 13 (replication operation) replication command check
4342 BOOST_CHECK_EQUAL( test_request.replication_command, l7vs::l7vsadm_request::REP_START );
4345 // execute normal case 14 (log operation)
4349 char* argv[] = { "l7vsadm_test",
4357 test_request = l7vs::l7vsadm_request();
4358 test_response = l7vs::l7vsd_response();
4359 test_response.status = l7vs::l7vsd_response::RESPONSE_OK;
4361 accept_ready = false;
4362 boost::thread thd1( &server_thread );
4364 //boost::mutex::scoped_lock lock( accept_mutex );
4365 //accept_condition.wait( lock );
4366 for(;;) { if(accept_ready) break; }
4368 bool ret = adm.execute_wp( argc, argv );
4371 // unit_test[380] execute normal case 14 (log operation) return value check
4372 BOOST_CHECK_EQUAL( ret, true );
4373 // unit_test[381] execute normal case 14 (log operation) request command check
4374 BOOST_CHECK_EQUAL( test_request.command, l7vs::l7vsadm_request::CMD_LOG );
4375 // unit_test[382] execute normal case 14 (log operation) logcategory check
4376 BOOST_CHECK_EQUAL( test_request.log_category, l7vs::LOG_CAT_L7VSD_NETWORK );
4377 // unit_test[383] execute normal case 14 (log operation) logcategory check
4378 BOOST_CHECK_EQUAL( test_request.log_level, l7vs::LOG_LV_DEBUG );
4381 // execute normal case 15 (snmp log operation)
4385 char* argv[] = { "l7vsadm_test",
4388 "snmpagent_start_stop",
4393 test_request = l7vs::l7vsadm_request();
4394 test_response = l7vs::l7vsd_response();
4395 test_response.status = l7vs::l7vsd_response::RESPONSE_OK;
4397 accept_ready = false;
4398 boost::thread thd1( &server_thread );
4400 //boost::mutex::scoped_lock lock( accept_mutex );
4401 //accept_condition.wait( lock );
4402 for(;;) { if(accept_ready) break; }
4404 bool ret = adm.execute_wp( argc, argv );
4407 // unit_test[384] execute normal case 15 (snmp log operation) return value check
4408 BOOST_CHECK_EQUAL( ret, true );
4409 // unit_test[385] execute normal case 15 (snmp log operation) request command check
4410 BOOST_CHECK_EQUAL( test_request.command, l7vs::l7vsadm_request::CMD_SNMP );
4411 // unit_test[386] execute normal case 15 (snmp log operation) logcategory check
4412 BOOST_CHECK_EQUAL( test_request.snmp_log_category, l7vs::LOG_CAT_SNMPAGENT_START_STOP );
4413 // unit_test[387] execute normal case 15 (snmp log operation) logcategory check
4414 BOOST_CHECK_EQUAL( test_request.snmp_log_level, l7vs::LOG_LV_WARN );
4417 // execute normal case 16 (parameter operation)
4421 char* argv[] = { "l7vsadm_test",
4427 test_request = l7vs::l7vsadm_request();
4428 test_response = l7vs::l7vsd_response();
4429 test_response.status = l7vs::l7vsd_response::RESPONSE_OK;
4431 accept_ready = false;
4432 boost::thread thd1( &server_thread );
4434 //boost::mutex::scoped_lock lock( accept_mutex );
4435 //accept_condition.wait( lock );
4436 for(;;) { if(accept_ready) break; }
4438 bool ret = adm.execute_wp( argc, argv );
4441 // unit_test[388] execute normal case 16 (parameter operation) return value check
4442 BOOST_CHECK_EQUAL( ret, true );
4443 // unit_test[389] execute normal case 16 (parameter operation) request command check
4444 BOOST_CHECK_EQUAL( test_request.command, l7vs::l7vsadm_request::CMD_PARAMETER );
4445 // unit_test[390] execute normal case 16 (parameter operation) reload_component check
4446 BOOST_CHECK_EQUAL( test_request.reload_param, l7vs::PARAM_COMP_LOGGER );
4449 // execute normal case 17 (help operation)
4453 char* argv[] = { "l7vsadm_test",
4457 test_request = l7vs::l7vsadm_request();
4458 test_response = l7vs::l7vsd_response();
4460 bool ret = adm.execute_wp( argc, argv );
4462 // unit_test[391] execute normal case 17 (help operation) return value check
4463 BOOST_CHECK_EQUAL( ret, true );
4464 // unit_test[392] execute normal case 17 (help operation) request command check
4465 BOOST_CHECK_EQUAL( adm.get_request().command, l7vs::l7vsadm_request::CMD_HELP );
4468 // execute error case 1 (invalid operation)
4472 char* argv[] = { "l7vsadm_test",
4476 test_request = l7vs::l7vsadm_request();
4477 test_response = l7vs::l7vsd_response();
4479 bool ret = adm.execute_wp( argc, argv );
4481 // unit_test[393] execute 1 (invalid operation) return value check
4482 BOOST_CHECK_EQUAL( ret, false );
4485 BOOST_MESSAGE( "----- execute_test end -----" );
4489 void l7vsadm_test::file_lock_class_test(){
4490 BOOST_MESSAGE( "----- file_lock_class_test start -----" );
4492 char file_path[256];
4493 memset(file_path, 0, sizeof(file_path));
4494 readlink("/proc/self/exe", file_path, sizeof(file_path));
4497 l7vs::error_code err;
4499 // unit_test[394] file_lock_class normal case 1 (first lock) error check
4500 l7vs::l7vsadm::file_lock lock( file_path, err );
4501 BOOST_CHECK( !err );
4503 // unit_test[395] file_lock_class normal case 1 (first lock) locable check
4504 bool ret = lock.try_lock();
4507 l7vs::error_code err2;
4508 // unit_test[396] file_lock_class normal case 2 (second lock) error check
4509 l7vs::l7vsadm::file_lock lock2( file_path, err2 );
4510 BOOST_CHECK( !err );
4512 // unit_test[397] file_lock_class normal case 2 (second lock) unlocable check
4513 ret = lock2.try_lock();
4514 BOOST_CHECK( !ret );
4518 l7vs::error_code err;
4520 // unit_test[398] file_lock_class normal case 3 (relock) error check
4521 l7vs::l7vsadm::file_lock lock( file_path, err );
4522 BOOST_CHECK( !err );
4524 // unit_test[399] file_lock_class normal case 3 (relock) locable check
4525 bool ret = lock.try_lock();
4529 BOOST_MESSAGE( "----- file_lock_class_test end -----" );
4534 test_suite* init_unit_test_suite( int argc, char* argv[] ){
4535 test_suite* ts = BOOST_TEST_SUITE( "l7vsd class test" );
4537 l7vs::Logger logger_instance;
4538 l7vs::Parameter parameter_instance;
4539 logger_instance.loadConf();
4541 ts->add( BOOST_TEST_CASE( &parse_list_func_test ) );
4543 ts->add( BOOST_TEST_CASE( &parse_opt_vs_target_func_test ) );
4544 ts->add( BOOST_TEST_CASE( &parse_opt_vs_module_func_test ) );
4545 ts->add( BOOST_TEST_CASE( &parse_opt_vs_scheduler_func_test ) );
4546 ts->add( BOOST_TEST_CASE( &parse_opt_vs_upper_func_test ) );
4547 ts->add( BOOST_TEST_CASE( &parse_opt_vs_bypass_func_test ) );
4548 ts->add( BOOST_TEST_CASE( &parse_opt_vs_qosup_func_test ) );
4549 ts->add( BOOST_TEST_CASE( &parse_opt_vs_qosdown_func_test ) );
4550 ts->add( BOOST_TEST_CASE( &parse_opt_vs_udp_func_test ) );
4552 ts->add( BOOST_TEST_CASE( &parse_opt_vs_ssl_file_func_test ) );
4553 ts->add( BOOST_TEST_CASE( &parse_opt_vs_access_log_func_test ) );
4554 ts->add( BOOST_TEST_CASE( &parse_opt_vs_access_log_logrotate_func_test ) );
4555 ts->add( BOOST_TEST_CASE( &parse_opt_vs_socket_func_test ) );
4557 ts->add( BOOST_TEST_CASE( &parse_vs_func_test ) );
4559 ts->add( BOOST_TEST_CASE( &parse_opt_rs_weight_func_test ) );
4560 ts->add( BOOST_TEST_CASE( &parse_opt_rs_realserver_func_test ) );
4561 ts->add( BOOST_TEST_CASE( &parse_rs_func_test ) );
4563 ts->add( BOOST_TEST_CASE( &parse_opt_replication_switch_func_test ) );
4564 ts->add( BOOST_TEST_CASE( &parse_opt_replication_force_func_test ) );
4565 ts->add( BOOST_TEST_CASE( &parse_opt_replication_dump_func_test ) );
4566 ts->add( BOOST_TEST_CASE( &parse_replication_func_test ) );
4568 ts->add( BOOST_TEST_CASE( &parse_opt_log_category_func_test ) );
4569 ts->add( BOOST_TEST_CASE( &parse_opt_log_level_func_test ) );
4570 ts->add( BOOST_TEST_CASE( &parse_log_func_test ) );
4572 ts->add( BOOST_TEST_CASE( &parse_opt_snmp_log_category_func_test ) );
4573 ts->add( BOOST_TEST_CASE( &parse_opt_snmp_log_level_func_test ) );
4574 ts->add( BOOST_TEST_CASE( &parse_snmp_func_test ) );
4576 ts->add( BOOST_TEST_CASE( &parse_opt_parameter_reload_func_test ) );
4577 ts->add( BOOST_TEST_CASE( &parse_parameter_func_test ) );
4579 ts->add( BOOST_TEST_CASE( &parse_opt_vs_fwdmode_func_test ) );
4580 ts->add( BOOST_TEST_CASE( &parse_opt_rs_fwdmode_func_test ) );
4582 ts->add( BOOST_TEST_CASE( &execute_test ) );
4584 ts->add( BOOST_TEST_CASE( &l7vsadm_test::file_lock_class_test ) );
4586 framework::master_test_suite().add( ts );