3 no warnings qw(redefine once);
8 use Test::More tests => 589;
12 require './l7directord';
15 our @config_error_args = ();
16 our @ld_gethostservbyname_args = undef;
17 our $ld_gethostservbyname_return = undef;
18 our $ld_gethostservbyname_undef = 0;
19 our $_ld_service_resolve_called = 0;
20 our @parse_fallback_args = ();
21 our $parse_fallback_return = undef;
22 our @parse_real_args = ();
23 our $parse_real_return = undef;
24 our $ld_openlog_arg = ();
25 our $ld_openlog_return = undef;
26 our @get_hostservbyname_args = ();
27 our $get_hostservbyname_return = undef;
28 our @ld_cmd_children_args = ();
29 our $system_wrapper_called = 0;
30 our $system_wrapper_return = undef;
31 our $ld_setup_die = 0;
32 our $read_config_die = 0;
33 our $read_config_virtual = [];
34 our $read_config_execute = {};
35 #...............................................
40 my $input = <<"CONFIG";
43 create_config($input) or skip 'cannot create config', 2;
45 is $main::PROC_STAT{initialized}, 1, 'read_config - empty config';
46 is_deeply \%main::CONFIG, \%main::GLOBAL, 'read_config - not set anything(1)';
50 my $input = <<"CONFIG";
62 create_config($input) or skip 'cannot create config', 2;
64 is $main::PROC_STAT{initialized}, 1, 'read_config - ignore comment';
65 is_deeply \%main::CONFIG, \%main::GLOBAL, 'read_config - not set anything(2)';
73 is $main::PROC_STAT{initialized}, 0, 'read_config - no such config file';
74 is $@, "config_error\n", 'read_config - raise config_error(3)';
75 is_deeply \@config_error_args, [0, 'ERR0407', $main::CONFIG_FILE{path}], 'read_config - config_error args(3)';
76 is_deeply \%main::CONFIG, \%main::GLOBAL, 'read_config - not set anything(3)';
79 my $input = <<"CONFIG";
83 virtual = virtual_value1
84 virtual = "virtual_value2" # comment
92 quiescent = yes # comment
93 fallback=fallback_value
97 logfile= "logfile_value"
101 virtual = "virtual_value3" # comment
111 virtualhost='virtualhost'
125 fallback = fallback_value
128 module = url --pattern-match "/foo/bar" # comment
130 sorryserver= sorryserver_value
134 realdowncallback=/bin/cat
135 realrecovercallback = '/bin/cat'
137 customcheck = "/bin/echo"
140 virtual = "virtual_value4" # comment
150 'retryinterval' => 4,
151 'negotiatetimeout' => 2,
152 'checkinterval' => 3,
154 'fallback' => { 'tcp' => 'fallback_return' },
155 'configinterval' => 5,
156 'execute' => { '/etc/hosts' => 1 },
157 'callback' => '/bin/cat',
159 'logfile' => 'logfile_value',
163 'httpmethod' => 'GET',
165 'retryinterval' => undef,
166 'negotiatetimeout' => undef,
167 'checkinterval' => undef,
171 'module' => { 'name' => 'sessionless', 'key' => '' },
172 'checktimeout' => undef,
174 'checktype' => 'negotiate',
175 'virtualhost' => undef,
176 'quiescent' => undef,
177 'realrecovercallback' => undef,
178 'sorryserver' => undef,
186 'checkcount' => undef,
187 'checkport' => undef,
189 'realdowncallback' => undef,
190 'customcheck' => undef,
194 'httpmethod' => 'GET',
196 'retryinterval' => undef,
197 'negotiatetimeout' => undef,
198 'checkinterval' => undef,
202 'module' => { 'name' => 'sessionless', 'key' => '' },
203 'checktimeout' => undef,
205 'checktype' => 'negotiate',
206 'virtualhost' => undef,
207 'quiescent' => undef,
208 'realrecovercallback' => undef,
209 'sorryserver' => undef,
217 'checkcount' => undef,
218 'checkport' => undef,
220 'realdowncallback' => undef,
221 'customcheck' => undef,
225 'httpmethod' => 'HEAD',
227 'retryinterval' => 4,
228 'negotiatetimeout' => 2,
229 'checkinterval' => 3,
232 'real' => ['real', 'real'],
235 'option' => '--pattern-match /foo/bar',
236 'key' => '--pattern-match /foo/bar'
239 'request' => 'request',
240 'checktype' => 'connect',
241 'virtualhost' => 'virtualhost',
243 'realrecovercallback' => '/bin/cat',
247 'fallback' => { 'tcp' => 'fallback_return' },
248 'passwd' => 'passwd',
249 'receive' => 'receive',
250 'database' => 'database',
253 'checkport' => 10000,
255 'realdowncallback' => '/bin/cat',
256 'customcheck' => '/bin/echo',
260 'httpmethod' => 'GET',
262 'retryinterval' => undef,
263 'negotiatetimeout' => undef,
264 'checkinterval' => undef,
268 'module' => { 'name' => 'sessionless', 'key' => '' },
269 'checktimeout' => undef,
271 'checktype' => 'negotiate',
272 'virtualhost' => undef,
273 'quiescent' => undef,
274 'realrecovercallback' => undef,
275 'sorryserver' => undef,
283 'checkcount' => undef,
284 'checkport' => undef,
286 'realdowncallback' => undef,
287 'customcheck' => undef,
292 local $ld_gethostservbyname_return = {};
293 local @ld_gethostservbyname_args = ();
294 local $_ld_service_resolve_called = 0;
295 local @parse_fallback_args = ();
296 local $parse_fallback_return = 'fallback_return';
297 local @parse_real_args = ();
298 local $parse_real_return = ['real'];
299 local $ld_openlog_arg = ();
300 local $ld_openlog_return = 0;
301 create_config($input) or skip 'cannot create config', 7;
303 is $main::PROC_STAT{initialized}, 1, 'read_config - full config';
304 is_deeply \%main::CONFIG, \%config, 'read_config - set all value';
305 is $_ld_service_resolve_called, 4, 'read_config - _ld_service_resolve called';
306 is_deeply \@ld_gethostservbyname_args,
307 ['virtual_value1', 'tcp', 'virtual_value2', 'tcp', 'virtual_value3', 'tcp',
308 'sorryserver_value', 'tcp', 'virtual_value4', 'tcp'],
309 'read_config - _ld_gethostservbyname called';
310 is_deeply \@parse_fallback_args,
311 [14, 'fallback_value', 'fallback=fallback_value',
312 46, 'fallback_value', ' fallback = fallback_value'],
313 'read_config - parse_fallback called';
314 is_deeply \@parse_real_args,
315 [23, 'real_value1', ' real = real_value1',
316 24, 'real_value2', ' real = real_value2',
317 62, 'real_value3', ' real = real_value3'],
318 'read_config - parse_real called';
319 is $ld_openlog_arg, 'logfile_value', 'read_config - ld_openlog called';
323 my $input = <<"CONFIG";
326 my %config = %main::GLOBAL;
327 $config{checktimeout} = 1;
329 create_config($input) or skip 'cannot create config', 2;
333 is $main::PROC_STAT{initialized}, 1, 'read_config - checktimeout result ok';
334 is_deeply \%main::CONFIG, \%config, 'read_config - checktimeout set config ok';
338 my $input = <<"CONFIG";
342 create_config($input) or skip 'cannot create config', 4;
346 is $main::PROC_STAT{initialized}, 0, 'read_config - checktimeout not defined';
347 is $@, "config_error\n", 'read_config - raise config_error(4)';
348 is_deeply \@config_error_args, [1, 'ERR0101', 'checktimeout'], 'read_config - config_error args(4)';
349 is_deeply \%main::CONFIG, \%main::GLOBAL, 'read_config - not set anything(4)';
353 my $input = <<"CONFIG";
357 create_config($input) or skip 'cannot create config', 4;
361 is $main::PROC_STAT{initialized}, 0, 'read_config - checktimeout not numeric';
362 is $@, "config_error\n", 'read_config - raise config_error(5)';
363 is_deeply \@config_error_args, [1, 'ERR0101', 'checktimeout=yes'], 'read_config - config_error args(5)';
364 is_deeply \%main::CONFIG, \%main::GLOBAL, 'read_config - not set anything(5)';
368 my $input = <<"CONFIG";
372 create_config($input) or skip 'cannot create config', 4;
376 is $main::PROC_STAT{initialized}, 0, 'read_config - checktimeout zero';
377 is $@, "config_error\n", 'read_config - raise config_error(6)';
378 is_deeply \@config_error_args, [1, 'ERR0101', 'checktimeout=0'], 'read_config - config_error args(6)';
379 is_deeply \%main::CONFIG, \%main::GLOBAL, 'read_config - not set anything(6)';
383 my $input = <<"CONFIG";
386 my %config = %main::GLOBAL;
387 $config{negotiatetimeout} = 1;
389 create_config($input) or skip 'cannot create config', 2;
393 is $main::PROC_STAT{initialized}, 1, 'read_config - negotiatetimeout result ok';
394 is_deeply \%main::CONFIG, \%config, 'read_config - negotiatetimeout set config ok';
398 my $input = <<"CONFIG";
402 create_config($input) or skip 'cannot create config', 4;
406 is $main::PROC_STAT{initialized}, 0, 'read_config - negotiatetimeout not defined';
407 is $@, "config_error\n", 'read_config - raise config_error(7)';
408 is_deeply \@config_error_args, [1, 'ERR0101', 'negotiatetimeout'], 'read_config - config_error args(7)';
409 is_deeply \%main::CONFIG, \%main::GLOBAL, 'read_config - not set anything(7)';
413 my $input = <<"CONFIG";
417 create_config($input) or skip 'cannot create config', 4;
421 is $main::PROC_STAT{initialized}, 0, 'read_config - negotiatetimeout not numeric';
422 is $@, "config_error\n", 'read_config - raise config_error(8)';
423 is_deeply \@config_error_args, [1, 'ERR0101', 'negotiatetimeout=yes'], 'read_config - config_error args(8)';
424 is_deeply \%main::CONFIG, \%main::GLOBAL, 'read_config - not set anything(8)';
428 my $input = <<"CONFIG";
432 create_config($input) or skip 'cannot create config', 4;
436 is $main::PROC_STAT{initialized}, 0, 'read_config - negotiatetimeout zero';
437 is $@, "config_error\n", 'read_config - raise config_error(9)';
438 is_deeply \@config_error_args, [1, 'ERR0101', 'negotiatetimeout=0'], 'read_config - config_error args(9)';
439 is_deeply \%main::CONFIG, \%main::GLOBAL, 'read_config - not set anything(9)';
443 my $input = <<"CONFIG";
446 my %config = %main::GLOBAL;
447 $config{checkinterval} = 1;
449 create_config($input) or skip 'cannot create config', 2;
453 is $main::PROC_STAT{initialized}, 1, 'read_config - checkinterval result ok';
454 is_deeply \%main::CONFIG, \%config, 'read_config - checkinterval set config ok';
458 my $input = <<"CONFIG";
462 create_config($input) or skip 'cannot create config', 4;
466 is $main::PROC_STAT{initialized}, 0, 'read_config - checkinterval not defined';
467 is $@, "config_error\n", 'read_config - raise config_error(10)';
468 is_deeply \@config_error_args, [1, 'ERR0101', 'checkinterval'], 'read_config - config_error args(10)';
469 is_deeply \%main::CONFIG, \%main::GLOBAL, 'read_config - not set anything(10)';
473 my $input = <<"CONFIG";
477 create_config($input) or skip 'cannot create config', 4;
481 is $main::PROC_STAT{initialized}, 0, 'read_config - checkinterval not numeric';
482 is $@, "config_error\n", 'read_config - raise config_error(11)';
483 is_deeply \@config_error_args, [1, 'ERR0101', 'checkinterval=yes'], 'read_config - config_error args(11)';
484 is_deeply \%main::CONFIG, \%main::GLOBAL, 'read_config - not set anything(11)';
488 my $input = <<"CONFIG";
492 create_config($input) or skip 'cannot create config', 4;
496 is $main::PROC_STAT{initialized}, 0, 'read_config - checkinterval zero';
497 is $@, "config_error\n", 'read_config - raise config_error(12)';
498 is_deeply \@config_error_args, [1, 'ERR0101', 'checkinterval=0'], 'read_config - config_error args(12)';
499 is_deeply \%main::CONFIG, \%main::GLOBAL, 'read_config - not set anything(12)';
503 my $input = <<"CONFIG";
506 my %config = %main::GLOBAL;
507 $config{retryinterval} = 1;
509 create_config($input) or skip 'cannot create config', 2;
513 is $main::PROC_STAT{initialized}, 1, 'read_config - retryinterval result ok';
514 is_deeply \%main::CONFIG, \%config, 'read_config - retryinterval set config ok';
518 my $input = <<"CONFIG";
522 create_config($input) or skip 'cannot create config', 4;
526 is $main::PROC_STAT{initialized}, 0, 'read_config - retryinterval not defined';
527 is $@, "config_error\n", 'read_config - raise config_error(13)';
528 is_deeply \@config_error_args, [1, 'ERR0101', 'retryinterval'], 'read_config - config_error args(13)';
529 is_deeply \%main::CONFIG, \%main::GLOBAL, 'read_config - not set anything(13)';
533 my $input = <<"CONFIG";
537 create_config($input) or skip 'cannot create config', 4;
541 is $main::PROC_STAT{initialized}, 0, 'read_config - retryinterval not numeric';
542 is $@, "config_error\n", 'read_config - raise config_error(14)';
543 is_deeply \@config_error_args, [1, 'ERR0101', 'retryinterval=yes'], 'read_config - config_error args(14)';
544 is_deeply \%main::CONFIG, \%main::GLOBAL, 'read_config - not set anything(14)';
548 my $input = <<"CONFIG";
552 create_config($input) or skip 'cannot create config', 4;
556 is $main::PROC_STAT{initialized}, 0, 'read_config - retryinterval zero';
557 is $@, "config_error\n", 'read_config - raise config_error(15)';
558 is_deeply \@config_error_args, [1, 'ERR0101', 'retryinterval=0'], 'read_config - config_error args(15)';
559 is_deeply \%main::CONFIG, \%main::GLOBAL, 'read_config - not set anything(15)';
563 my $input = <<"CONFIG";
566 my %config = %main::GLOBAL;
567 $config{configinterval} = 1;
569 create_config($input) or skip 'cannot create config', 2;
573 is $main::PROC_STAT{initialized}, 1, 'read_config - configinterval result ok';
574 is_deeply \%main::CONFIG, \%config, 'read_config - configinterval set config ok';
578 my $input = <<"CONFIG";
582 create_config($input) or skip 'cannot create config', 4;
586 is $main::PROC_STAT{initialized}, 0, 'read_config - configinterval not defined';
587 is $@, "config_error\n", 'read_config - raise config_error(16)';
588 is_deeply \@config_error_args, [1, 'ERR0101', 'configinterval'], 'read_config - config_error args(16)';
589 is_deeply \%main::CONFIG, \%main::GLOBAL, 'read_config - not set anything(16)';
593 my $input = <<"CONFIG";
597 create_config($input) or skip 'cannot create config', 4;
601 is $main::PROC_STAT{initialized}, 0, 'read_config - configinterval not numeric';
602 is $@, "config_error\n", 'read_config - raise config_error(17)';
603 is_deeply \@config_error_args, [1, 'ERR0101', 'configinterval=yes'], 'read_config - config_error args(17)';
604 is_deeply \%main::CONFIG, \%main::GLOBAL, 'read_config - not set anything(17)';
608 my $input = <<"CONFIG";
612 create_config($input) or skip 'cannot create config', 4;
616 is $main::PROC_STAT{initialized}, 0, 'read_config - configinterval zero';
617 is $@, "config_error\n", 'read_config - raise config_error(18)';
618 is_deeply \@config_error_args, [1, 'ERR0101', 'configinterval=0'], 'read_config - config_error args(18)';
619 is_deeply \%main::CONFIG, \%main::GLOBAL, 'read_config - not set anything(18)';
623 my $input = <<"CONFIG";
626 my %config = %main::GLOBAL;
627 $config{checkcount} = 1;
629 create_config($input) or skip 'cannot create config', 2;
633 is $main::PROC_STAT{initialized}, 1, 'read_config - checkcount result ok';
634 is_deeply \%main::CONFIG, \%config, 'read_config - checkcount set config ok';
638 my $input = <<"CONFIG";
642 create_config($input) or skip 'cannot create config', 4;
646 is $main::PROC_STAT{initialized}, 0, 'read_config - checkcount not defined';
647 is $@, "config_error\n", 'read_config - raise config_error(19)';
648 is_deeply \@config_error_args, [1, 'ERR0101', 'checkcount'], 'read_config - config_error args(19)';
649 is_deeply \%main::CONFIG, \%main::GLOBAL, 'read_config - not set anything(19)';
653 my $input = <<"CONFIG";
657 create_config($input) or skip 'cannot create config', 4;
661 is $main::PROC_STAT{initialized}, 0, 'read_config - checkcount not numeric';
662 is $@, "config_error\n", 'read_config - raise config_error(20)';
663 is_deeply \@config_error_args, [1, 'ERR0101', 'checkcount=yes'], 'read_config - config_error args(20)';
664 is_deeply \%main::CONFIG, \%main::GLOBAL, 'read_config - not set anything(20)';
668 my $input = <<"CONFIG";
672 create_config($input) or skip 'cannot create config', 4;
676 is $main::PROC_STAT{initialized}, 0, 'read_config - checkcount zero';
677 is $@, "config_error\n", 'read_config - raise config_error(21)';
678 is_deeply \@config_error_args, [1, 'ERR0101', 'checkcount=0'], 'read_config - config_error args(21)';
679 is_deeply \%main::CONFIG, \%main::GLOBAL, 'read_config - not set anything(21)';
683 my $input = <<"CONFIG";
686 my %config = %main::GLOBAL;
687 $config{autoreload} = 1;
689 create_config($input) or skip 'cannot create config', 2;
693 is $main::PROC_STAT{initialized}, 1, 'read_config - autoreload yes result ok';
694 is_deeply \%main::CONFIG, \%config, 'read_config - autoreload yes set config ok';
698 my $input = <<"CONFIG";
701 my %config = %main::GLOBAL;
702 $config{autoreload} = 0;
704 create_config($input) or skip 'cannot create config', 2;
708 is $main::PROC_STAT{initialized}, 1, 'read_config - autoreload no result ok';
709 is_deeply \%main::CONFIG, \%config, 'read_config - autoreload no set config ok';
713 my $input = <<"CONFIG";
717 create_config($input) or skip 'cannot create config', 4;
721 is $main::PROC_STAT{initialized}, 0, 'read_config - autoreload not defined';
722 is $@, "config_error\n", 'read_config - raise config_error(22)';
723 is_deeply \@config_error_args, [1, 'ERR0102', 'autoreload'], 'read_config - config_error args(22)';
724 is_deeply \%main::CONFIG, \%main::GLOBAL, 'read_config - not set anything(22)';
728 my $input = <<"CONFIG";
732 create_config($input) or skip 'cannot create config', 4;
736 is $main::PROC_STAT{initialized}, 0, 'read_config - autoreload not lower yes or no(1)';
737 is $@, "config_error\n", 'read_config - raise config_error(23)';
738 is_deeply \@config_error_args, [1, 'ERR0102', 'autoreload=YEAH'], 'read_config - config_error args(23)';
739 is_deeply \%main::CONFIG, \%main::GLOBAL, 'read_config - not set anything(23)';
743 my $input = <<"CONFIG";
747 create_config($input) or skip 'cannot create config', 4;
751 is $main::PROC_STAT{initialized}, 0, 'read_config - autoreload not lower yes or no(2)';
752 is $@, "config_error\n", 'read_config - raise config_error(24)';
753 is_deeply \@config_error_args, [1, 'ERR0102', 'autoreload=0'], 'read_config - config_error args(24)';
754 is_deeply \%main::CONFIG, \%main::GLOBAL, 'read_config - not set anything(24)';
758 my $input = <<"CONFIG";
761 my %config = %main::GLOBAL;
762 $config{quiescent} = 1;
764 create_config($input) or skip 'cannot create config', 2;
768 is $main::PROC_STAT{initialized}, 1, 'read_config - quiescent yes result ok';
769 is_deeply \%main::CONFIG, \%config, 'read_config - quiescent yes set config ok';
773 my $input = <<"CONFIG";
776 my %config = %main::GLOBAL;
777 $config{quiescent} = 0;
779 create_config($input) or skip 'cannot create config', 2;
783 is $main::PROC_STAT{initialized}, 1, 'read_config - quiescent no result ok';
784 is_deeply \%main::CONFIG, \%config, 'read_config - quiescent no set config ok';
788 my $input = <<"CONFIG";
792 create_config($input) or skip 'cannot create config', 4;
796 is $main::PROC_STAT{initialized}, 0, 'read_config - quiescent not defined';
797 is $@, "config_error\n", 'read_config - raise config_error(25)';
798 is_deeply \@config_error_args, [1, 'ERR0102', 'quiescent'], 'read_config - config_error args(25)';
799 is_deeply \%main::CONFIG, \%main::GLOBAL, 'read_config - not set anything(25)';
803 my $input = <<"CONFIG";
807 create_config($input) or skip 'cannot create config', 4;
811 is $main::PROC_STAT{initialized}, 0, 'read_config - quiescent not lower yes or no(1)';
812 is $@, "config_error\n", 'read_config - raise config_error(26)';
813 is_deeply \@config_error_args, [1, 'ERR0102', 'quiescent=NOPE'], 'read_config - config_error args(26)';
814 is_deeply \%main::CONFIG, \%main::GLOBAL, 'read_config - not set anything(26)';
818 my $input = <<"CONFIG";
822 create_config($input) or skip 'cannot create config', 4;
826 is $main::PROC_STAT{initialized}, 0, 'read_config - quiescent not lower yes or no(2)';
827 is $@, "config_error\n", 'read_config - raise config_error(27)';
828 is_deeply \@config_error_args, [1, 'ERR0102', 'quiescent=0'], 'read_config - config_error args(27)';
829 is_deeply \%main::CONFIG, \%main::GLOBAL, 'read_config - not set anything(27)';
833 my $input = <<"CONFIG";
836 my %config = %main::GLOBAL;
837 $config{fallback} = { tcp => undef };
839 create_config($input) or skip 'cannot create config', 3;
840 local @parse_fallback_args = ();
841 local $parse_fallback_return = undef;
845 is $main::PROC_STAT{initialized}, 1, 'read_config - fallback not defined';
846 is_deeply \%main::CONFIG, \%config, 'read_config - fallback set undef..';
847 is_deeply \@parse_fallback_args, [1, undef, 'fallback'], 'read_config - parse_fallback_args(1)';
851 my $input = <<"CONFIG";
852 fallback=localhost:http
854 my %config = %main::GLOBAL;
855 $config{fallback} = { tcp => 'fallback' };
857 create_config($input) or skip 'cannot create config', 3;
858 local @parse_fallback_args = ();
859 local $parse_fallback_return = 'fallback';
863 is $main::PROC_STAT{initialized}, 1, 'read_config - fallback ok';
864 is_deeply \%main::CONFIG, \%config, 'read_config - fallback set normal';
865 is_deeply \@parse_fallback_args, [1, 'localhost:http', 'fallback=localhost:http'], 'read_config - parse_fallback_args(2)';
869 my $input = <<"CONFIG";
872 my %config = %main::GLOBAL;
873 $config{callback} = '/bin/sh';
875 create_config($input) or skip 'cannot create config', 2;
879 is $main::PROC_STAT{initialized}, 1, 'read_config - callback result ok';
880 is_deeply \%main::CONFIG, \%config, 'read_config - callback set config ok';
884 my $input = <<"CONFIG";
888 create_config($input) or skip 'cannot create config', 4;
892 is $main::PROC_STAT{initialized}, 0, 'read_config - callback not defined';
893 is $@, "config_error\n", 'read_config - raise config_error(28)';
894 is_deeply \@config_error_args, [1, 'ERR0117', 'callback'], 'read_config - config_error args(28)';
895 is_deeply \%main::CONFIG, \%main::GLOBAL, 'read_config - not set anything(28)';
899 my $input = <<"CONFIG";
903 create_config($input) or skip 'cannot create config', 4;
907 is $main::PROC_STAT{initialized}, 0, 'read_config - callback cannot execute';
908 is $@, "config_error\n", 'read_config - raise config_error(29)';
909 is_deeply \@config_error_args, [1, 'ERR0117', 'callback=/proc/1'], 'read_config - config_error args(29)';
910 is_deeply \%main::CONFIG, \%main::GLOBAL, 'read_config - not set anything(29)';
914 my $input = <<"CONFIG";
915 callback=/proc/100000
918 create_config($input) or skip 'cannot create config', 4;
922 is $main::PROC_STAT{initialized}, 0, 'read_config - callback no such file';
923 is $@, "config_error\n", 'read_config - raise config_error(30)';
924 is_deeply \@config_error_args, [1, 'ERR0117', 'callback=/proc/100000'], 'read_config - config_error args(30)';
925 is_deeply \%main::CONFIG, \%main::GLOBAL, 'read_config - not set anything(30)';
929 my $input = <<"CONFIG";
933 create_config($input) or skip 'cannot create config', 4;
937 is $main::PROC_STAT{initialized}, 0, 'read_config - callback directory';
938 is $@, "config_error\n", 'read_config - raise config_error(31)';
939 is_deeply \@config_error_args, [1, 'ERR0117', 'callback=/proc'], 'read_config - config_error args(31)';
940 is_deeply \%main::CONFIG, \%main::GLOBAL, 'read_config - not set anything(31)';
944 my $input = <<"CONFIG";
948 my %config = %main::GLOBAL;
949 $config{execute} = { '/bin/sh' => 1, '/bin/bash' => 1 };
951 create_config($input) or skip 'cannot create config', 2;
955 is $main::PROC_STAT{initialized}, 1, 'read_config - execute result ok';
956 is_deeply \%main::CONFIG, \%config, 'read_config - execute set config ok';
960 my $input = <<"CONFIG";
964 create_config($input) or skip 'cannot create config', 4;
968 is $main::PROC_STAT{initialized}, 0, 'read_config - execute not defined';
969 is $@, "config_error\n", 'read_config - raise config_error(32)';
970 is_deeply \@config_error_args, [1, 'ERR0116', 'execute'], 'read_config - config_error args(32)';
971 is_deeply \%main::CONFIG, \%main::GLOBAL, 'read_config - not set anything(32)';
975 my $input = <<"CONFIG";
979 create_config($input) or skip 'cannot create config', 4;
983 is $main::PROC_STAT{initialized}, 0, 'read_config - execute no such file';
984 is $@, "config_error\n", 'read_config - raise config_error(33)';
985 is_deeply \@config_error_args, [1, 'ERR0116', 'execute=/proc/100000'], 'read_config - config_error args(33)';
986 is_deeply \%main::CONFIG, \%main::GLOBAL, 'read_config - not set anything(33)';
990 my $input = <<"CONFIG";
994 create_config($input) or skip 'cannot create config', 4;
998 is $main::PROC_STAT{initialized}, 0, 'read_config - execute directory';
999 is $@, "config_error\n", 'read_config - raise config_error(34)';
1000 is_deeply \@config_error_args, [1, 'ERR0116', 'execute=/proc'], 'read_config - config_error args(34)';
1001 is_deeply \%main::CONFIG, \%main::GLOBAL, 'read_config - not set anything(34)';
1005 my $input = <<"CONFIG";
1008 my %config = %main::GLOBAL;
1009 $config{logfile} = '/bin/sh';
1011 create_config($input) or skip 'cannot create config', 2;
1015 is $main::PROC_STAT{initialized}, 1, 'read_config - logfile result ok';
1016 is_deeply \%main::CONFIG, \%config, 'read_config - logfile set config ok';
1020 my $input = <<"CONFIG";
1023 my %config = %main::GLOBAL;
1024 $config{logfile} = 'sys';
1026 create_config($input) or skip 'cannot create config', 2;
1027 local $ld_openlog_arg = undef;
1028 local $ld_openlog_return = 0;
1032 is $main::PROC_STAT{initialized}, 1, 'read_config - logfile ld_openlog ok';
1033 is_deeply \%main::CONFIG, \%config, 'read_config - logfile ld_openlog ok';
1037 my $input = <<"CONFIG";
1041 create_config($input) or skip 'cannot create config', 4;
1045 is $main::PROC_STAT{initialized}, 0, 'read_config - logfile not defined';
1046 is $@, "config_error\n", 'read_config - raise config_error(35)';
1047 is_deeply \@config_error_args, [1, 'ERR0118', 'logfile'], 'read_config - config_error args(35)';
1048 is_deeply \%main::CONFIG, \%main::GLOBAL, 'read_config - not set anything(35)';
1052 my $input = <<"CONFIG";
1056 create_config($input) or skip 'cannot create config', 5;
1057 local $ld_openlog_arg = undef;
1058 local $ld_openlog_return = 1;
1062 is $main::PROC_STAT{initialized}, 0, 'read_config - logfile ld_openlog fail';
1063 is $@, "config_error\n", 'read_config - raise config_error(36)';
1064 is_deeply \@config_error_args, [1, 'ERR0118', 'logfile=sys'], 'read_config - config_error args(36)';
1065 is_deeply \%main::CONFIG, \%main::GLOBAL, 'read_config - not set anything(36)';
1066 is $ld_openlog_arg, 'sys', 'read_config - ld_openlog arg';
1070 my $input = <<"CONFIG";
1073 my %config = %main::GLOBAL;
1074 $config{supervised} = 1;
1076 create_config($input) or skip 'cannot create config', 2;
1080 is $main::PROC_STAT{initialized}, 1, 'read_config - supervised result ok(1)';
1081 is_deeply \%main::CONFIG, \%config, 'read_config - supervised set config ok(1)';
1085 my $input = <<"CONFIG";
1088 my %config = %main::GLOBAL;
1089 $config{supervised} = 1;
1091 create_config($input) or skip 'cannot create config', 2;
1095 is $main::PROC_STAT{initialized}, 1, 'read_config - supervised result ok(2)';
1096 is_deeply \%main::CONFIG, \%config, 'read_config - supervised set config ok(2)';
1100 my $input = <<"CONFIG";
1103 my %config = %main::GLOBAL;
1104 $config{supervised} = 1;
1106 create_config($input) or skip 'cannot create config', 2;
1110 is $main::PROC_STAT{initialized}, 1, 'read_config - supervised result ok(3)';
1111 is_deeply \%main::CONFIG, \%config, 'read_config - supervised set config ok(3)';
1115 my $input = <<"CONFIG";
1119 create_config($input) or skip 'cannot create config', 4;
1123 is $main::PROC_STAT{initialized}, 0, 'read_config - unknown config';
1124 is $@, "config_error\n", 'read_config - raise config_error(37)';
1125 is_deeply \@config_error_args, [1, 'ERR0120', 'unknown'], 'read_config - config_error args(37)';
1126 is_deeply \%main::CONFIG, \%main::GLOBAL, 'read_config - not set anything(37)';
1130 my $input = <<"CONFIG";
1134 create_config($input) or skip 'cannot create config', 5;
1135 local @ld_gethostservbyname_args = ();
1136 local $ld_gethostservbyname_return = undef;
1140 is $main::PROC_STAT{initialized}, 0, 'read_config - virtual not defined';
1141 is $@, "config_error\n", 'read_config - raise config_error(38)';
1142 is_deeply \@config_error_args, [1, 'ERR0114', 'virtual'], 'read_config - config_error args(38)';
1143 is_deeply \%main::CONFIG, \%main::GLOBAL, 'read_config - not set anything(38)';
1144 is_deeply \@ld_gethostservbyname_args, [undef, 'tcp'], 'read_config - ld_gethostservbyname args(1)';
1148 my $input = <<"CONFIG";
1149 virtual=localhost:http
1152 create_config($input) or skip 'cannot create config', 4;
1153 local @ld_gethostservbyname_args = ();
1154 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
1158 is $main::PROC_STAT{initialized}, 1, 'read_config - virtual normal ok';
1159 is $main::CONFIG{virtual}[0]{server}{ip}, '127.0.0.1', 'read_config - set virtual ip ok';
1160 is $main::CONFIG{virtual}[0]{server}{port}, 80, 'read_config - set virtual port ok';
1161 is_deeply \@ld_gethostservbyname_args, ['localhost:http', 'tcp'], 'read_config - ld_gethostservbyname args(2)';
1165 my $input = <<"CONFIG";
1169 create_config($input) or skip 'cannot create config', 4;
1173 is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - no virtual line';
1174 is $@, "config_error\n", 'read_config - virtual section - raise config_error(1)';
1175 is_deeply \@config_error_args, [1, 'ERR0119', ' real=localhost:http'], 'read_config - virtual section - config_error args(1)';
1176 is_deeply \%main::CONFIG, \%main::GLOBAL, 'read_config - virtual section - not set anything(1)';
1180 my $input = <<"CONFIG";
1181 virtual=localhost:http
1185 create_config($input) or skip 'cannot create config', 3;
1186 local @ld_gethostservbyname_args = ();
1187 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
1191 is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - unknown config';
1192 is $@, "config_error\n", 'read_config - virtual section - raise config_error(2)';
1193 is_deeply \@config_error_args, [2, 'ERR0120', ' unknown'], 'read_config - virtual section - config_error args(2)';
1197 my $input = <<"CONFIG";
1198 virtual=localhost:http
1199 real="realhost1:ftp"
1200 real="realhost2:ftp"
1203 create_config($input) or skip 'cannot create config', 6;
1204 local @ld_gethostservbyname_args = ();
1205 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
1206 local @parse_real_args = ();
1207 local $parse_real_return = [ {server => { ip => '127.0.0.2', port => 21 } } ];
1211 is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - real ok';
1212 is $main::CONFIG{virtual}[0]{real}[0]{server}{ip}, '127.0.0.2', 'read_config - virtual section - set real ip ok(1)';
1213 is $main::CONFIG{virtual}[0]{real}[0]{server}{port}, 21, 'read_config - virtual section - set real port ok(1)';
1214 is $main::CONFIG{virtual}[0]{real}[1]{server}{ip}, '127.0.0.2', 'read_config - virtual section - set real ip ok(2)';
1215 is $main::CONFIG{virtual}[0]{real}[1]{server}{port}, 21, 'read_config - virtual section - set real port ok(2)';
1216 is_deeply \@parse_real_args, [2, 'realhost1:ftp', ' real="realhost1:ftp"',
1217 3, 'realhost2:ftp', ' real="realhost2:ftp"'], 'read_config - virtual section - parse_real args';
1221 my $input = <<"CONFIG";
1222 virtual=localhost:http
1226 create_config($input) or skip 'cannot create config', 3;
1227 local @ld_gethostservbyname_args = ();
1228 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
1229 local @parse_real_args = ();
1230 local $parse_real_return = undef;
1234 is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - real not defined';
1235 is_deeply \@parse_real_args, [2, undef, ' real'], 'read_config - virtual section - parse_real args(3)';
1239 my $input = <<"CONFIG";
1240 virtual=localhost:http
1241 request="/index.html"
1244 create_config($input) or skip 'cannot create config', 2;
1245 local @ld_gethostservbyname_args = ();
1246 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
1250 is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - request ok';
1251 is $main::CONFIG{virtual}[0]{request}, '/index.html', 'read_config - virtual section - set request ok';
1255 my $input = <<"CONFIG";
1256 virtual=localhost:http
1260 create_config($input) or skip 'cannot create config', 3;
1261 local @ld_gethostservbyname_args = ();
1262 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
1266 is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - request not defined';
1267 is $@, "config_error\n", 'read_config - virtual section - raise config_error(4)';
1268 is_deeply \@config_error_args, [2, 'ERR0103', ' request ='], 'read_config - virtual section - config_error args(4)';
1272 my $input = <<"CONFIG";
1273 virtual=localhost:http
1277 create_config($input) or skip 'cannot create config', 3;
1278 local @ld_gethostservbyname_args = ();
1279 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
1283 is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - empty request';
1284 is $@, "config_error\n", 'read_config - virtual section - raise config_error(5)';
1285 is_deeply \@config_error_args, [2, 'ERR0103', ' request = ""'], 'read_config - virtual section - config_error args(5)';
1289 my $input = <<"CONFIG";
1290 virtual=localhost:http
1294 create_config($input) or skip 'cannot create config', 2;
1295 local @ld_gethostservbyname_args = ();
1296 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
1300 is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - receive ok';
1301 is $main::CONFIG{virtual}[0]{receive}, 'body', 'read_config - virtual section - set receive ok';
1305 my $input = <<"CONFIG";
1306 virtual=localhost:http
1310 create_config($input) or skip 'cannot create config', 3;
1311 local @ld_gethostservbyname_args = ();
1312 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
1316 is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - receive not defined';
1317 is $@, "config_error\n", 'read_config - virtual section - raise config_error(4)';
1318 is_deeply \@config_error_args, [2, 'ERR0103', ' receive ='], 'read_config - virtual section - config_error args(4)';
1322 my $input = <<"CONFIG";
1323 virtual=localhost:http
1327 create_config($input) or skip 'cannot create config', 3;
1328 local @ld_gethostservbyname_args = ();
1329 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
1333 is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - empty receive';
1334 is $@, "config_error\n", 'read_config - virtual section - raise config_error(5)';
1335 is_deeply \@config_error_args, [2, 'ERR0103', ' receive = ""'], 'read_config - virtual section - config_error args(5)';
1339 my $input = <<"CONFIG";
1340 virtual=localhost:http
1344 create_config($input) or skip 'cannot create config', 2;
1345 local @ld_gethostservbyname_args = ();
1346 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
1350 is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - login ok';
1351 is $main::CONFIG{virtual}[0]{login}, 'anonymous', 'read_config - virtual section - set login ok';
1355 my $input = <<"CONFIG";
1356 virtual=localhost:http
1360 create_config($input) or skip 'cannot create config', 3;
1361 local @ld_gethostservbyname_args = ();
1362 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
1366 is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - login not defined';
1367 is $@, "config_error\n", 'read_config - virtual section - raise config_error(4)';
1368 is_deeply \@config_error_args, [2, 'ERR0103', ' login ='], 'read_config - virtual section - config_error args(4)';
1372 my $input = <<"CONFIG";
1373 virtual=localhost:http
1377 create_config($input) or skip 'cannot create config', 3;
1378 local @ld_gethostservbyname_args = ();
1379 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
1383 is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - empty login';
1384 is $@, "config_error\n", 'read_config - virtual section - raise config_error(5)';
1385 is_deeply \@config_error_args, [2, 'ERR0103', ' login = ""'], 'read_config - virtual section - config_error args(5)';
1389 my $input = <<"CONFIG";
1390 virtual=localhost:http
1391 passwd = "ftp\@localhost"
1394 create_config($input) or skip 'cannot create config', 2;
1395 local @ld_gethostservbyname_args = ();
1396 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
1400 is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - passwd ok';
1401 is $main::CONFIG{virtual}[0]{passwd}, 'ftp@localhost', 'read_config - virtual section - set passwd ok';
1405 my $input = <<"CONFIG";
1406 virtual=localhost:http
1410 create_config($input) or skip 'cannot create config', 3;
1411 local @ld_gethostservbyname_args = ();
1412 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
1416 is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - passwd not defined';
1417 is $@, "config_error\n", 'read_config - virtual section - raise config_error(4)';
1418 is_deeply \@config_error_args, [2, 'ERR0103', ' passwd ='], 'read_config - virtual section - config_error args(4)';
1422 my $input = <<"CONFIG";
1423 virtual=localhost:http
1427 create_config($input) or skip 'cannot create config', 3;
1428 local @ld_gethostservbyname_args = ();
1429 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
1433 is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - empty passwd';
1434 is $@, "config_error\n", 'read_config - virtual section - raise config_error(5)';
1435 is_deeply \@config_error_args, [2, 'ERR0103', ' passwd = ""'], 'read_config - virtual section - config_error args(5)';
1439 my $input = <<"CONFIG";
1440 virtual=localhost:http
1441 database = "template"
1444 create_config($input) or skip 'cannot create config', 2;
1445 local @ld_gethostservbyname_args = ();
1446 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
1450 is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - database ok';
1451 is $main::CONFIG{virtual}[0]{database}, 'template', 'read_config - virtual section - set database ok';
1455 my $input = <<"CONFIG";
1456 virtual=localhost:http
1460 create_config($input) or skip 'cannot create config', 3;
1461 local @ld_gethostservbyname_args = ();
1462 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
1466 is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - database not defined';
1467 is $@, "config_error\n", 'read_config - virtual section - raise config_error(4)';
1468 is_deeply \@config_error_args, [2, 'ERR0103', ' database ='], 'read_config - virtual section - config_error args(4)';
1472 my $input = <<"CONFIG";
1473 virtual=localhost:http
1477 create_config($input) or skip 'cannot create config', 3;
1478 local @ld_gethostservbyname_args = ();
1479 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
1483 is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - empty database';
1484 is $@, "config_error\n", 'read_config - virtual section - raise config_error(5)';
1485 is_deeply \@config_error_args, [2, 'ERR0103', ' database = ""'], 'read_config - virtual section - config_error args(5)';
1489 my $input = <<"CONFIG";
1490 virtual=localhost:http
1491 virtualhost = "vip.domain.com"
1494 create_config($input) or skip 'cannot create config', 2;
1495 local @ld_gethostservbyname_args = ();
1496 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
1500 is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - virtualhost ok';
1501 is $main::CONFIG{virtual}[0]{virtualhost}, 'vip.domain.com', 'read_config - virtual section - set virtualhost ok';
1505 my $input = <<"CONFIG";
1506 virtual=localhost:http
1510 create_config($input) or skip 'cannot create config', 3;
1511 local @ld_gethostservbyname_args = ();
1512 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
1516 is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - virtualhost not defined';
1517 is $@, "config_error\n", 'read_config - virtual section - raise config_error(4)';
1518 is_deeply \@config_error_args, [2, 'ERR0103', ' virtualhost ='], 'read_config - virtual section - config_error args(4)';
1522 my $input = <<"CONFIG";
1523 virtual=localhost:http
1527 create_config($input) or skip 'cannot create config', 3;
1528 local @ld_gethostservbyname_args = ();
1529 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
1533 is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - empty virtualhost';
1534 is $@, "config_error\n", 'read_config - virtual section - raise config_error(5)';
1535 is_deeply \@config_error_args, [2, 'ERR0103', ' virtualhost = ""'], 'read_config - virtual section - config_error args(5)';
1539 my $input = <<"CONFIG";
1540 virtual=localhost:http
1544 create_config($input) or skip 'cannot create config', 2;
1545 local @ld_gethostservbyname_args = ();
1546 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
1550 is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - checktype connect ok';
1551 is $main::CONFIG{virtual}[0]{checktype}, 'connect', 'read_config - virtual section - set checktype connect ok';
1555 my $input = <<"CONFIG";
1556 virtual=localhost:http
1557 checktype = nEgOtIaTe
1560 create_config($input) or skip 'cannot create config', 2;
1561 local @ld_gethostservbyname_args = ();
1562 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
1566 is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - checktype negotiate ok';
1567 is $main::CONFIG{virtual}[0]{checktype}, 'negotiate', 'read_config - virtual section - set checktype negotiate ok';
1571 my $input = <<"CONFIG";
1572 virtual=localhost:http
1576 create_config($input) or skip 'cannot create config', 2;
1577 local @ld_gethostservbyname_args = ();
1578 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
1582 is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - checktype ping ok';
1583 is $main::CONFIG{virtual}[0]{checktype}, 'ping', 'read_config - virtual section - set checktype ping ok';
1587 my $input = <<"CONFIG";
1588 virtual=localhost:http
1592 create_config($input) or skip 'cannot create config', 2;
1593 local @ld_gethostservbyname_args = ();
1594 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
1598 is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - checktype off ok';
1599 is $main::CONFIG{virtual}[0]{checktype}, 'off', 'read_config - virtual section - set checktype off ok';
1603 my $input = <<"CONFIG";
1604 virtual=localhost:http
1608 create_config($input) or skip 'cannot create config', 2;
1609 local @ld_gethostservbyname_args = ();
1610 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
1614 is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - checktype on ok';
1615 is $main::CONFIG{virtual}[0]{checktype}, 'on', 'read_config - virtual section - set checktype on ok';
1619 my $input = <<"CONFIG";
1620 virtual=localhost:http
1624 create_config($input) or skip 'cannot create config', 2;
1625 local @ld_gethostservbyname_args = ();
1626 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
1630 is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - checktype combined ok';
1631 is $main::CONFIG{virtual}[0]{checktype}, '1', 'read_config - virtual section - set checktype combined ok';
1635 my $input = <<"CONFIG";
1636 virtual=localhost:http
1640 create_config($input) or skip 'cannot create config', 3;
1641 local @ld_gethostservbyname_args = ();
1642 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
1646 is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - checktype not defined';
1647 is $@, "config_error\n", 'read_config - virtual section - raise config_error(6)';
1648 is_deeply \@config_error_args, [2, 'ERR0104', ' checktype ='], 'read_config - virtual section - config_error args(6)';
1652 my $input = <<"CONFIG";
1653 virtual=localhost:http
1657 create_config($input) or skip 'cannot create config', 3;
1658 local @ld_gethostservbyname_args = ();
1659 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
1663 is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - checktype not valid';
1664 is $@, "config_error\n", 'read_config - virtual section - raise config_error(7)';
1665 is_deeply \@config_error_args, [2, 'ERR0104', ' checktype = unknown'], 'read_config - virtual section - config_error args(7)';
1669 my $input = <<"CONFIG";
1670 virtual=localhost:http
1674 create_config($input) or skip 'cannot create config', 3;
1675 local @ld_gethostservbyname_args = ();
1676 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
1680 is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - checktype is zero';
1681 is $@, "config_error\n", 'read_config - virtual section - raise config_error(8)';
1682 is_deeply \@config_error_args, [2, 'ERR0104', ' checktype = 0'], 'read_config - virtual section - config_error args(8)';
1686 my $input = <<"CONFIG";
1687 virtual=localhost:http
1691 create_config($input) or skip 'cannot create config', 2;
1692 local @ld_gethostservbyname_args = ();
1693 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
1697 is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - checktimeout ok';
1698 is $main::CONFIG{virtual}[0]{checktimeout}, '1', 'read_config - virtual section - set checktimeout ok';
1702 my $input = <<"CONFIG";
1703 virtual=localhost:http
1707 create_config($input) or skip 'cannot create config', 3;
1708 local @ld_gethostservbyname_args = ();
1709 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
1713 is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - checktimeout not defined';
1714 is $@, "config_error\n", 'read_config - virtual section - raise config_error(9)';
1715 is_deeply \@config_error_args, [2, 'ERR0101', ' checktimeout'], 'read_config - virtual section - config_error args(9)';
1719 my $input = <<"CONFIG";
1720 virtual=localhost:http
1724 create_config($input) or skip 'cannot create config', 3;
1725 local @ld_gethostservbyname_args = ();
1726 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
1730 is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - checktimeout not numeric';
1731 is $@, "config_error\n", 'read_config - virtual section - raise config_error(10)';
1732 is_deeply \@config_error_args, [2, 'ERR0101', ' checktimeout = yes'], 'read_config - virtual section - config_error args(10)';
1736 my $input = <<"CONFIG";
1737 virtual=localhost:http
1741 create_config($input) or skip 'cannot create config', 3;
1742 local @ld_gethostservbyname_args = ();
1743 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
1747 is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - checktimeout is zero';
1748 is $@, "config_error\n", 'read_config - virtual section - raise config_error(11)';
1749 is_deeply \@config_error_args, [2, 'ERR0101', ' checktimeout = 0'], 'read_config - virtual section - config_error args(11)';
1753 my $input = <<"CONFIG";
1754 virtual=localhost:http
1755 negotiatetimeout = '1'
1758 create_config($input) or skip 'cannot create config', 2;
1759 local @ld_gethostservbyname_args = ();
1760 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
1764 is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - negotiatetimeout ok';
1765 is $main::CONFIG{virtual}[0]{negotiatetimeout}, '1', 'read_config - virtual section - set negotiatetimeout ok';
1769 my $input = <<"CONFIG";
1770 virtual=localhost:http
1774 create_config($input) or skip 'cannot create config', 3;
1775 local @ld_gethostservbyname_args = ();
1776 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
1780 is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - negotiatetimeout not defined';
1781 is $@, "config_error\n", 'read_config - virtual section - raise config_error(12)';
1782 is_deeply \@config_error_args, [2, 'ERR0101', ' negotiatetimeout'], 'read_config - virtual section - config_error args(12)';
1786 my $input = <<"CONFIG";
1787 virtual=localhost:http
1788 negotiatetimeout = yes
1791 create_config($input) or skip 'cannot create config', 3;
1792 local @ld_gethostservbyname_args = ();
1793 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
1797 is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - negotiatetimeout not numeric';
1798 is $@, "config_error\n", 'read_config - virtual section - raise config_error(13)';
1799 is_deeply \@config_error_args, [2, 'ERR0101', ' negotiatetimeout = yes'], 'read_config - virtual section - config_error args(13)';
1803 my $input = <<"CONFIG";
1804 virtual=localhost:http
1805 negotiatetimeout = 0
1808 create_config($input) or skip 'cannot create config', 3;
1809 local @ld_gethostservbyname_args = ();
1810 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
1814 is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - negotiatetimeout is zero';
1815 is $@, "config_error\n", 'read_config - virtual section - raise config_error(14)';
1816 is_deeply \@config_error_args, [2, 'ERR0101', ' negotiatetimeout = 0'], 'read_config - virtual section - config_error args(14)';
1820 my $input = <<"CONFIG";
1821 virtual=localhost:http
1825 create_config($input) or skip 'cannot create config', 2;
1826 local @ld_gethostservbyname_args = ();
1827 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
1831 is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - checkinterval ok';
1832 is $main::CONFIG{virtual}[0]{checkinterval}, '1', 'read_config - virtual section - set checkinterval ok';
1836 my $input = <<"CONFIG";
1837 virtual=localhost:http
1841 create_config($input) or skip 'cannot create config', 3;
1842 local @ld_gethostservbyname_args = ();
1843 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
1847 is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - checkinterval not defined';
1848 is $@, "config_error\n", 'read_config - virtual section - raise config_error(15)';
1849 is_deeply \@config_error_args, [2, 'ERR0101', ' checkinterval'], 'read_config - virtual section - config_error args(15)';
1853 my $input = <<"CONFIG";
1854 virtual=localhost:http
1858 create_config($input) or skip 'cannot create config', 3;
1859 local @ld_gethostservbyname_args = ();
1860 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
1864 is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - checkinterval not numeric';
1865 is $@, "config_error\n", 'read_config - virtual section - raise config_error(16)';
1866 is_deeply \@config_error_args, [2, 'ERR0101', ' checkinterval = yes'], 'read_config - virtual section - config_error args(16)';
1870 my $input = <<"CONFIG";
1871 virtual=localhost:http
1875 create_config($input) or skip 'cannot create config', 3;
1876 local @ld_gethostservbyname_args = ();
1877 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
1881 is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - checkinterval is zero';
1882 is $@, "config_error\n", 'read_config - virtual section - raise config_error(17)';
1883 is_deeply \@config_error_args, [2, 'ERR0101', ' checkinterval = 0'], 'read_config - virtual section - config_error args(17)';
1887 my $input = <<"CONFIG";
1888 virtual=localhost:http
1892 create_config($input) or skip 'cannot create config', 2;
1893 local @ld_gethostservbyname_args = ();
1894 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
1898 is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - retryinterval ok';
1899 is $main::CONFIG{virtual}[0]{retryinterval}, '1', 'read_config - virtual section - set retryinterval ok';
1903 my $input = <<"CONFIG";
1904 virtual=localhost:http
1908 create_config($input) or skip 'cannot create config', 3;
1909 local @ld_gethostservbyname_args = ();
1910 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
1914 is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - retryinterval not defined';
1915 is $@, "config_error\n", 'read_config - virtual section - raise config_error(18)';
1916 is_deeply \@config_error_args, [2, 'ERR0101', ' retryinterval'], 'read_config - virtual section - config_error args(18)';
1920 my $input = <<"CONFIG";
1921 virtual=localhost:http
1925 create_config($input) or skip 'cannot create config', 3;
1926 local @ld_gethostservbyname_args = ();
1927 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
1931 is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - retryinterval not numeric';
1932 is $@, "config_error\n", 'read_config - virtual section - raise config_error(19)';
1933 is_deeply \@config_error_args, [2, 'ERR0101', ' retryinterval = yes'], 'read_config - virtual section - config_error args(19)';
1937 my $input = <<"CONFIG";
1938 virtual=localhost:http
1942 create_config($input) or skip 'cannot create config', 3;
1943 local @ld_gethostservbyname_args = ();
1944 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
1948 is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - retryinterval is zero';
1949 is $@, "config_error\n", 'read_config - virtual section - raise config_error(20)';
1950 is_deeply \@config_error_args, [2, 'ERR0101', ' retryinterval = 0'], 'read_config - virtual section - config_error args(20)';
1954 my $input = <<"CONFIG";
1955 virtual=localhost:http
1959 create_config($input) or skip 'cannot create config', 2;
1960 local @ld_gethostservbyname_args = ();
1961 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
1965 is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - checkcount ok';
1966 is $main::CONFIG{virtual}[0]{checkcount}, '1', 'read_config - virtual section - set checkcount ok';
1970 my $input = <<"CONFIG";
1971 virtual=localhost:http
1975 create_config($input) or skip 'cannot create config', 3;
1976 local @ld_gethostservbyname_args = ();
1977 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
1981 is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - checkcount not defined';
1982 is $@, "config_error\n", 'read_config - virtual section - raise config_error(21)';
1983 is_deeply \@config_error_args, [2, 'ERR0101', ' checkcount'], 'read_config - virtual section - config_error args(21)';
1987 my $input = <<"CONFIG";
1988 virtual=localhost:http
1992 create_config($input) or skip 'cannot create config', 3;
1993 local @ld_gethostservbyname_args = ();
1994 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
1998 is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - checkcount not numeric';
1999 is $@, "config_error\n", 'read_config - virtual section - raise config_error(22)';
2000 is_deeply \@config_error_args, [2, 'ERR0101', ' checkcount = yes'], 'read_config - virtual section - config_error args(22)';
2004 my $input = <<"CONFIG";
2005 virtual=localhost:http
2009 create_config($input) or skip 'cannot create config', 3;
2010 local @ld_gethostservbyname_args = ();
2011 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
2015 is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - checkcount is zero';
2016 is $@, "config_error\n", 'read_config - virtual section - raise config_error(23)';
2017 is_deeply \@config_error_args, [2, 'ERR0101', ' checkcount = 0'], 'read_config - virtual section - config_error args(23)';
2021 my $input = <<"CONFIG";
2022 virtual=localhost:http
2026 create_config($input) or skip 'cannot create config', 2;
2027 local @ld_gethostservbyname_args = ();
2028 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
2032 is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - maxconn ok';
2033 is $main::CONFIG{virtual}[0]{maxconn}, '0', 'read_config - virtual section - set maxconn ok';
2037 my $input = <<"CONFIG";
2038 virtual=localhost:http
2042 create_config($input) or skip 'cannot create config', 3;
2043 local @ld_gethostservbyname_args = ();
2044 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
2048 is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - maxconn not defined';
2049 is $@, "config_error\n", 'read_config - virtual section - raise config_error(24)';
2050 is_deeply \@config_error_args, [2, 'ERR0101', ' maxconn'], 'read_config - virtual section - config_error args(24)';
2054 my $input = <<"CONFIG";
2055 virtual=localhost:http
2059 create_config($input) or skip 'cannot create config', 3;
2060 local @ld_gethostservbyname_args = ();
2061 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
2065 is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - maxconn not numeric';
2066 is $@, "config_error\n", 'read_config - virtual section - raise config_error(25)';
2067 is_deeply \@config_error_args, [2, 'ERR0101', ' maxconn = yes'], 'read_config - virtual section - config_error args(25)';
2071 my $input = <<"CONFIG";
2072 virtual=localhost:http
2076 create_config($input) or skip 'cannot create config', 3;
2077 local @ld_gethostservbyname_args = ();
2078 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
2082 is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - maxconn is minus';
2083 is $@, "config_error\n", 'read_config - virtual section - raise config_error(26)';
2084 is_deeply \@config_error_args, [2, 'ERR0101', ' maxconn = -1'], 'read_config - virtual section - config_error args(26)';
2088 my $input = <<"CONFIG";
2089 virtual=localhost:http
2093 create_config($input) or skip 'cannot create config', 2;
2094 local @ld_gethostservbyname_args = ();
2095 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
2099 is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - checkport min ok';
2100 is $main::CONFIG{virtual}[0]{checkport}, '1', 'read_config - virtual section - set checkport min ok';
2104 my $input = <<"CONFIG";
2105 virtual=localhost:http
2109 create_config($input) or skip 'cannot create config', 2;
2110 local @ld_gethostservbyname_args = ();
2111 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
2115 is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - checkport max ok';
2116 is $main::CONFIG{virtual}[0]{checkport}, '65535', 'read_config - virtual section - set checkport max ok';
2120 my $input = <<"CONFIG";
2121 virtual=localhost:http
2125 create_config($input) or skip 'cannot create config', 3;
2126 local @ld_gethostservbyname_args = ();
2127 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
2131 is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - checkport not defined';
2132 is $@, "config_error\n", 'read_config - virtual section - raise config_error(27)';
2133 is_deeply \@config_error_args, [2, 'ERR0108', ' checkport'], 'read_config - virtual section - config_error args(27)';
2137 my $input = <<"CONFIG";
2138 virtual=localhost:http
2142 create_config($input) or skip 'cannot create config', 3;
2143 local @ld_gethostservbyname_args = ();
2144 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
2148 is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - checkport not numeric';
2149 is $@, "config_error\n", 'read_config - virtual section - raise config_error(28)';
2150 is_deeply \@config_error_args, [2, 'ERR0108', ' checkport = yes'], 'read_config - virtual section - config_error args(28)';
2154 my $input = <<"CONFIG";
2155 virtual=localhost:http
2159 create_config($input) or skip 'cannot create config', 3;
2160 local @ld_gethostservbyname_args = ();
2161 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
2165 is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - checkport is zero';
2166 is $@, "config_error\n", 'read_config - virtual section - raise config_error(29';
2167 is_deeply \@config_error_args, [2, 'ERR0108', ' checkport = 0'], 'read_config - virtual section - config_error args(29)';
2171 my $input = <<"CONFIG";
2172 virtual=localhost:http
2176 create_config($input) or skip 'cannot create config', 3;
2177 local @ld_gethostservbyname_args = ();
2178 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
2182 is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - checkport is over range';
2183 is $@, "config_error\n", 'read_config - virtual section - raise config_error(30)';
2184 is_deeply \@config_error_args, [2, 'ERR0108', ' checkport = 65536'], 'read_config - virtual section - config_error args(30)';
2188 my $input = <<"CONFIG";
2189 virtual=localhost:http
2193 create_config($input) or skip 'cannot create config', 2;
2194 local @ld_gethostservbyname_args = ();
2195 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
2199 is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - scheduler lc ok';
2200 is $main::CONFIG{virtual}[0]{scheduler}, 'lc', 'read_config - virtual section - set scheduler lc ok';
2204 my $input = <<"CONFIG";
2205 virtual=localhost:http
2209 create_config($input) or skip 'cannot create config', 2;
2210 local @ld_gethostservbyname_args = ();
2211 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
2215 is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - scheduler rr ok';
2216 is $main::CONFIG{virtual}[0]{scheduler}, 'rr', 'read_config - virtual section - set scheduler rr ok';
2220 my $input = <<"CONFIG";
2221 virtual=localhost:http
2225 create_config($input) or skip 'cannot create config', 2;
2226 local @ld_gethostservbyname_args = ();
2227 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
2231 is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - scheduler wrr ok';
2232 is $main::CONFIG{virtual}[0]{scheduler}, 'wrr', 'read_config - virtual section - set scheduler wrr ok';
2236 my $input = <<"CONFIG";
2237 virtual=localhost:http
2241 create_config($input) or skip 'cannot create config', 3;
2242 local @ld_gethostservbyname_args = ();
2243 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
2247 is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - scheduler not defined';
2248 is $@, "config_error\n", 'read_config - virtual section - raise config_error(31)';
2249 is_deeply \@config_error_args, [2, 'ERR0105', ' scheduler ='], 'read_config - virtual section - config_error args(31)';
2253 my $input = <<"CONFIG";
2254 virtual=localhost:http
2258 create_config($input) or skip 'cannot create config', 3;
2259 local @ld_gethostservbyname_args = ();
2260 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
2264 is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - scheduler not valid';
2265 is $@, "config_error\n", 'read_config - virtual section - raise config_error(32)';
2266 is_deeply \@config_error_args, [2, 'ERR0105', ' scheduler = unknown'], 'read_config - virtual section - config_error args(32)';
2270 my $input = <<"CONFIG";
2271 virtual=localhost:http
2275 create_config($input) or skip 'cannot create config', 2;
2276 local @ld_gethostservbyname_args = ();
2277 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
2281 is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - protocol ok';
2282 is $main::CONFIG{virtual}[0]{protocol}, 'tcp', 'read_config - virtual section - set protocol ok';
2286 my $input = <<"CONFIG";
2287 virtual=localhost:http
2291 create_config($input) or skip 'cannot create config', 3;
2292 local @ld_gethostservbyname_args = ();
2293 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
2297 is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - protocol not defined';
2298 is $@, "config_error\n", 'read_config - virtual section - raise config_error(33)';
2299 is_deeply \@config_error_args, [2, 'ERR0109', ' protocol ='], 'read_config - virtual section - config_error args(33)';
2303 my $input = <<"CONFIG";
2304 virtual=localhost:http
2308 create_config($input) or skip 'cannot create config', 3;
2309 local @ld_gethostservbyname_args = ();
2310 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
2314 is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - protocol not valid';
2315 is $@, "config_error\n", 'read_config - virtual section - raise config_error(34)';
2316 is_deeply \@config_error_args, [2, 'ERR0109', ' protocol = unknown'], 'read_config - virtual section - config_error args(34)';
2320 my $input = <<"CONFIG";
2321 virtual=localhost:http
2325 create_config($input) or skip 'cannot create config', 2;
2326 local @ld_gethostservbyname_args = ();
2327 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
2331 is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - service http ok';
2332 is $main::CONFIG{virtual}[0]{service}, 'http', 'read_config - virtual section - set service http ok';
2336 my $input = <<"CONFIG";
2337 virtual=localhost:http
2341 create_config($input) or skip 'cannot create config', 2;
2342 local @ld_gethostservbyname_args = ();
2343 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
2347 is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - service https ok';
2348 is $main::CONFIG{virtual}[0]{service}, 'https', 'read_config - virtual section - set service https ok';
2352 my $input = <<"CONFIG";
2353 virtual=localhost:http
2357 create_config($input) or skip 'cannot create config', 2;
2358 local @ld_gethostservbyname_args = ();
2359 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
2363 is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - service ldap ok';
2364 is $main::CONFIG{virtual}[0]{service}, 'ldap', 'read_config - virtual section - set service ldap ok';
2368 my $input = <<"CONFIG";
2369 virtual=localhost:http
2373 create_config($input) or skip 'cannot create config', 2;
2374 local @ld_gethostservbyname_args = ();
2375 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
2379 is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - service ftp ok';
2380 is $main::CONFIG{virtual}[0]{service}, 'ftp', 'read_config - virtual section - set service ftp ok';
2384 my $input = <<"CONFIG";
2385 virtual=localhost:http
2389 create_config($input) or skip 'cannot create config', 2;
2390 local @ld_gethostservbyname_args = ();
2391 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
2395 is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - service smtp ok';
2396 is $main::CONFIG{virtual}[0]{service}, 'smtp', 'read_config - virtual section - set service smtp ok';
2400 my $input = <<"CONFIG";
2401 virtual=localhost:http
2405 create_config($input) or skip 'cannot create config', 2;
2406 local @ld_gethostservbyname_args = ();
2407 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
2411 is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - service pop ok';
2412 is $main::CONFIG{virtual}[0]{service}, 'pop', 'read_config - virtual section - set service pop ok';
2416 my $input = <<"CONFIG";
2417 virtual=localhost:http
2421 create_config($input) or skip 'cannot create config', 2;
2422 local @ld_gethostservbyname_args = ();
2423 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
2427 is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - service imap ok';
2428 is $main::CONFIG{virtual}[0]{service}, 'imap', 'read_config - virtual section - set service imap ok';
2432 my $input = <<"CONFIG";
2433 virtual=localhost:http
2437 create_config($input) or skip 'cannot create config', 2;
2438 local @ld_gethostservbyname_args = ();
2439 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
2443 is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - service nntp ok';
2444 is $main::CONFIG{virtual}[0]{service}, 'nntp', 'read_config - virtual section - set service nntp ok';
2448 my $input = <<"CONFIG";
2449 virtual=localhost:http
2453 create_config($input) or skip 'cannot create config', 2;
2454 local @ld_gethostservbyname_args = ();
2455 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
2459 is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - service dns ok';
2460 is $main::CONFIG{virtual}[0]{service}, 'dns', 'read_config - virtual section - set service dns ok';
2464 my $input = <<"CONFIG";
2465 virtual=localhost:http
2469 create_config($input) or skip 'cannot create config', 2;
2470 local @ld_gethostservbyname_args = ();
2471 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
2475 is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - service mysql ok';
2476 is $main::CONFIG{virtual}[0]{service}, 'mysql', 'read_config - virtual section - set service mysql ok';
2480 my $input = <<"CONFIG";
2481 virtual=localhost:http
2485 create_config($input) or skip 'cannot create config', 2;
2486 local @ld_gethostservbyname_args = ();
2487 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
2491 is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - service pgsql ok';
2492 is $main::CONFIG{virtual}[0]{service}, 'pgsql', 'read_config - virtual section - set service pgsql ok';
2496 my $input = <<"CONFIG";
2497 virtual=localhost:http
2501 create_config($input) or skip 'cannot create config', 2;
2502 local @ld_gethostservbyname_args = ();
2503 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
2507 is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - service sip ok';
2508 is $main::CONFIG{virtual}[0]{service}, 'sip', 'read_config - virtual section - set service sip ok';
2512 my $input = <<"CONFIG";
2513 virtual=localhost:http
2517 create_config($input) or skip 'cannot create config', 2;
2518 local @ld_gethostservbyname_args = ();
2519 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
2523 is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - service none ok';
2524 is $main::CONFIG{virtual}[0]{service}, 'none', 'read_config - virtual section - set service none ok';
2528 my $input = <<"CONFIG";
2529 virtual=localhost:http
2533 create_config($input) or skip 'cannot create config', 3;
2534 local @ld_gethostservbyname_args = ();
2535 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
2539 is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - service not defined';
2540 is $@, "config_error\n", 'read_config - virtual section - raise config_error(31)';
2541 is_deeply \@config_error_args, [2, 'ERR0106', ' service ='], 'read_config - virtual section - config_error args(31)';
2545 my $input = <<"CONFIG";
2546 virtual=localhost:http
2550 create_config($input) or skip 'cannot create config', 3;
2551 local @ld_gethostservbyname_args = ();
2552 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
2556 is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - service not valid';
2557 is $@, "config_error\n", 'read_config - virtual section - raise config_error(32)';
2558 is_deeply \@config_error_args, [2, 'ERR0106', ' service = unknown'], 'read_config - virtual section - config_error args(32)';
2562 my $input = <<"CONFIG";
2563 virtual=localhost:http
2567 create_config($input) or skip 'cannot create config', 2;
2568 local @ld_gethostservbyname_args = ();
2569 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
2573 is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - httpmethod GET ok';
2574 is $main::CONFIG{virtual}[0]{httpmethod}, 'GET', 'read_config - virtual section - set httpmethod GET ok';
2578 my $input = <<"CONFIG";
2579 virtual=localhost:http
2583 create_config($input) or skip 'cannot create config', 2;
2584 local @ld_gethostservbyname_args = ();
2585 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
2589 is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - httpmethod HEAD ok';
2590 is $main::CONFIG{virtual}[0]{httpmethod}, 'HEAD', 'read_config - virtual section - set httpmethod HEAD ok';
2594 my $input = <<"CONFIG";
2595 virtual=localhost:http
2599 create_config($input) or skip 'cannot create config', 3;
2600 local @ld_gethostservbyname_args = ();
2601 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
2605 is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - httpmethod not defined';
2606 is $@, "config_error\n", 'read_config - virtual section - raise config_error(31)';
2607 is_deeply \@config_error_args, [2, 'ERR0110', ' httpmethod ='], 'read_config - virtual section - config_error args(31)';
2611 my $input = <<"CONFIG";
2612 virtual=localhost:http
2613 httpmethod = unknown
2616 create_config($input) or skip 'cannot create config', 3;
2617 local @ld_gethostservbyname_args = ();
2618 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
2622 is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - httpmethod not valid';
2623 is $@, "config_error\n", 'read_config - virtual section - raise config_error(32)';
2624 is_deeply \@config_error_args, [2, 'ERR0110', ' httpmethod = unknown'], 'read_config - virtual section - config_error args(32)';
2628 my $input = <<"CONFIG";
2629 virtual=localhost:http
2633 create_config($input) or skip 'cannot create config', 2;
2634 local @ld_gethostservbyname_args = ();
2635 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
2636 local @parse_fallback_args = ();
2637 local $parse_fallback_return = undef;
2641 is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - fallback not defined';
2642 is_deeply \@parse_fallback_args, [2, undef, ' fallback'], 'read_config - virtual section - parse_fallback_args(1)';
2646 my $input = <<"CONFIG";
2647 virtual=localhost:http
2648 fallback=localhost:http
2651 create_config($input) or skip 'cannot create config', 2;
2652 local @ld_gethostservbyname_args = ();
2653 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
2654 local @parse_fallback_args = ();
2655 local $parse_fallback_return = 'fallback';
2659 is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - fallback ok';
2660 is_deeply \@parse_fallback_args, [2, 'localhost:http', ' fallback=localhost:http'], 'read_config - virtual section - parse_fallback_args(2)';
2664 my $input = <<"CONFIG";
2665 virtual=localhost:http
2669 create_config($input) or skip 'cannot create config', 2;
2670 local @ld_gethostservbyname_args = ();
2671 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
2675 is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - quiescent yes ok';
2676 is $main::CONFIG{virtual}[0]{quiescent}, '1', 'read_config - virtual section - set quiescent yes ok';
2680 my $input = <<"CONFIG";
2681 virtual=localhost:http
2685 create_config($input) or skip 'cannot create config', 2;
2686 local @ld_gethostservbyname_args = ();
2687 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
2691 is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - quiescent no ok';
2692 is $main::CONFIG{virtual}[0]{quiescent}, '0', 'read_config - virtual section - set quiescent no ok';
2696 my $input = <<"CONFIG";
2697 virtual=localhost:http
2701 create_config($input) or skip 'cannot create config', 3;
2702 local @ld_gethostservbyname_args = ();
2703 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
2707 is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - quiescent not defined';
2708 is $@, "config_error\n", 'read_config - virtual section - raise config_error(33)';
2709 is_deeply \@config_error_args, [2, 'ERR0102', ' quiescent'], 'read_config - virtual section - config_error args(33)';
2713 my $input = <<"CONFIG";
2714 virtual=localhost:http
2718 create_config($input) or skip 'cannot create config', 3;
2719 local @ld_gethostservbyname_args = ();
2720 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
2724 is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - quiescent not lower yes or no(1)';
2725 is $@, "config_error\n", 'read_config - virtual section - raise config_error(34)';
2726 is_deeply \@config_error_args, [2, 'ERR0102', ' quiescent=YEP'], 'read_config - virtual section - config_error args(34)';
2730 my $input = <<"CONFIG";
2731 virtual=localhost:http
2735 create_config($input) or skip 'cannot create config', 3;
2736 local @ld_gethostservbyname_args = ();
2737 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
2741 is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - quiescent not lower yes or no(2)';
2742 is $@, "config_error\n", 'read_config - virtual section - raise config_error(35)';
2743 is_deeply \@config_error_args, [2, 'ERR0102', ' quiescent=0'], 'read_config - virtual section - config_error args(35)';
2747 my $input = <<"CONFIG";
2748 virtual=localhost:http
2749 module= URL --reschedule --pattern-match "foobar"
2752 create_config($input) or skip 'cannot create config', 2;
2753 local @ld_gethostservbyname_args = ();
2754 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
2758 is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - module url ok';
2759 is_deeply $main::CONFIG{virtual}[0]{module}, { name => 'url', option => '--reschedule --pattern-match foobar', key => '--pattern-match foobar' }, 'read_config - virtual section - set module url ok';
2763 my $input = <<"CONFIG";
2764 virtual=localhost:http
2765 module= 'cINSERT --cookie-name 'Monkey' --cookie-expire 864'
2768 create_config($input) or skip 'cannot create config', 2;
2769 local @ld_gethostservbyname_args = ();
2770 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
2774 is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - module cinsert ok';
2775 is_deeply $main::CONFIG{virtual}[0]{module}, { name => 'cinsert', option => '--cookie-name Monkey --cookie-expire 864', key => '--cookie-name Monkey' }, 'read_config - virtual section - set module cinsert ok';
2779 my $input = <<"CONFIG";
2780 virtual=localhost:http
2784 create_config($input) or skip 'cannot create config', 2;
2785 local @ld_gethostservbyname_args = ();
2786 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
2790 is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - module sslid ok';
2791 is_deeply $main::CONFIG{virtual}[0]{module}, { name => 'sslid', option => undef, key => '' }, 'read_config - virtual section - set module sslid ok';
2795 my $input = <<"CONFIG";
2796 virtual=localhost:http
2800 create_config($input) or skip 'cannot create config', 2;
2801 local @ld_gethostservbyname_args = ();
2802 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
2806 is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - module sessionless ok';
2807 is_deeply $main::CONFIG{virtual}[0]{module}, { name => 'sessionless', option => undef, key => '' }, 'read_config - virtual section - set module sessionless ok';
2811 my $input = <<"CONFIG";
2812 virtual=localhost:http
2813 module= 'Cinsert --reschedule'
2816 create_config($input) or skip 'cannot create config', 2;
2817 local @ld_gethostservbyname_args = ();
2818 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
2822 is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - module cinsert omit ok';
2823 is_deeply $main::CONFIG{virtual}[0]{module}, { name => 'cinsert', option => '--cookie-name CookieName --reschedule', key => '--cookie-name CookieName' }, 'read_config - virtual section - set module cinsert omit ok';
2827 my $input = <<"CONFIG";
2828 virtual=localhost:http
2832 create_config($input) or skip 'cannot create config', 3;
2833 local @ld_gethostservbyname_args = ();
2834 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
2838 is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - module not defined';
2839 is $@, "config_error\n", 'read_config - virtual section - raise config_error(36)';
2840 is_deeply \@config_error_args, [2, 'ERR0111', ' module'], 'read_config - virtual section - config_error args(36)';
2844 my $input = <<"CONFIG";
2845 virtual=localhost:http
2849 create_config($input) or skip 'cannot create config', 3;
2850 local @ld_gethostservbyname_args = ();
2851 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
2855 is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - unknown module';
2856 is $@, "config_error\n", 'read_config - virtual section - raise config_error(37)';
2857 is_deeply \@config_error_args, [2, 'ERR0111', ' module = unknown'], 'read_config - virtual section - config_error args(37)';
2861 my $input = <<"CONFIG";
2862 virtual=localhost:http
2866 create_config($input) or skip 'cannot create config', 3;
2867 local @ld_gethostservbyname_args = ();
2868 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
2872 is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - url module key not exist';
2873 is $@, "config_error\n", 'read_config - virtual section - raise config_error(39)';
2874 is_deeply \@config_error_args, [2, 'ERR0112', 'url', q{--pattern-match' or `--uri-pattern-match' or `--host-pattern-match}, ' module = url'], 'read_config - virtual section - config_error args(39)';
2878 my $input = <<"CONFIG";
2879 virtual=localhost:http
2880 sorryserver = sorryhost:ssh
2883 create_config($input) or skip 'cannot create config', 3;
2884 local @ld_gethostservbyname_args = ();
2885 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
2889 is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - sorryserver ok';
2890 is_deeply $main::CONFIG{virtual}[0]{sorryserver}, { ip => '127.0.0.1', port => 80 }, 'read_config - virtual section - set sorryserver ok';
2891 is_deeply \@ld_gethostservbyname_args, ['localhost:http', 'tcp', 'sorryhost:ssh', 'tcp'], 'read_config - virtual section - ld_gethostservbyname args(3)';
2895 my $input = <<"CONFIG";
2896 virtual=localhost:http
2900 create_config($input) or skip 'cannot create config', 4;
2901 local @ld_gethostservbyname_args = ();
2902 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
2903 local $ld_gethostservbyname_undef = 2;
2907 is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - sorryserver not defined';
2908 is $@, "config_error\n", 'read_config - virtual section - raise config_error(40)';
2909 is_deeply \@config_error_args, [2, 'ERR0114', ' sorryserver'], 'read_config - virtual section - config_error args(40)';
2910 is_deeply \@ld_gethostservbyname_args, ['localhost:http', 'tcp', undef, 'tcp'], 'read_config - virtual section - ld_gethostservbyname args(4)';
2914 my $input = <<"CONFIG";
2915 virtual=localhost:http
2916 sorryserver = sorryhost:ftp
2919 create_config($input) or skip 'cannot create config', 4;
2920 local @ld_gethostservbyname_args = ();
2921 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
2922 local $ld_gethostservbyname_undef = 2;
2926 is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - sorryserver not defined';
2927 is $@, "config_error\n", 'read_config - virtual section - raise config_error(41)';
2928 is_deeply \@config_error_args, [2, 'ERR0114', ' sorryserver = sorryhost:ftp'], 'read_config - virtual section - config_error args(41)';
2929 is_deeply \@ld_gethostservbyname_args, ['localhost:http', 'tcp', 'sorryhost:ftp', 'tcp'], 'read_config - virtual section - ld_gethostservbyname args(5)';
2933 my $input = <<"CONFIG";
2934 virtual=localhost:http
2938 create_config($input) or skip 'cannot create config', 2;
2939 local @ld_gethostservbyname_args = ();
2940 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
2944 is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - qosup 0 ok';
2945 is $main::CONFIG{virtual}[0]{qosup}, '0', 'read_config - virtual section - set qosup 0 ok';
2949 my $input = <<"CONFIG";
2950 virtual=localhost:http
2954 create_config($input) or skip 'cannot create config', 2;
2955 local @ld_gethostservbyname_args = ();
2956 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
2960 is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - qosup min kilo ok';
2961 is $main::CONFIG{virtual}[0]{qosup}, '1K', 'read_config - virtual section - set qosup min kilo ok';
2965 my $input = <<"CONFIG";
2966 virtual=localhost:http
2970 create_config($input) or skip 'cannot create config', 2;
2971 local @ld_gethostservbyname_args = ();
2972 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
2976 is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - qosup max kilo ok';
2977 is $main::CONFIG{virtual}[0]{qosup}, '999K', 'read_config - virtual section - set qosup max kilo ok';
2981 my $input = <<"CONFIG";
2982 virtual=localhost:http
2986 create_config($input) or skip 'cannot create config', 2;
2987 local @ld_gethostservbyname_args = ();
2988 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
2992 is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - qosup min mega ok';
2993 is $main::CONFIG{virtual}[0]{qosup}, '1M', 'read_config - virtual section - set qosup min mega ok';
2997 my $input = <<"CONFIG";
2998 virtual=localhost:http
3002 create_config($input) or skip 'cannot create config', 2;
3003 local @ld_gethostservbyname_args = ();
3004 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
3008 is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - qosup max mega ok';
3009 is $main::CONFIG{virtual}[0]{qosup}, '999M', 'read_config - virtual section - set qosup max mega ok';
3013 my $input = <<"CONFIG";
3014 virtual=localhost:http
3018 create_config($input) or skip 'cannot create config', 2;
3019 local @ld_gethostservbyname_args = ();
3020 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
3024 is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - qosup min giga ok';
3025 is $main::CONFIG{virtual}[0]{qosup}, '1G', 'read_config - virtual section - set qosup min giga ok';
3029 my $input = <<"CONFIG";
3030 virtual=localhost:http
3034 create_config($input) or skip 'cannot create config', 2;
3035 local @ld_gethostservbyname_args = ();
3036 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
3040 is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - qosup max giga ok';
3041 is $main::CONFIG{virtual}[0]{qosup}, '999G', 'read_config - virtual section - set qosup max giga ok';
3045 my $input = <<"CONFIG";
3046 virtual=localhost:http
3050 create_config($input) or skip 'cannot create config', 3;
3051 local @ld_gethostservbyname_args = ();
3052 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
3056 is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - qosup not defined';
3057 is $@, "config_error\n", 'read_config - virtual section - raise config_error(42)';
3058 is_deeply \@config_error_args, [2, 'ERR0113', ' qosup'], 'read_config - virtual section - config_error args(42)';
3062 my $input = <<"CONFIG";
3063 virtual=localhost:http
3067 create_config($input) or skip 'cannot create config', 3;
3068 local @ld_gethostservbyname_args = ();
3069 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
3073 is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - qosup not valid format(1)';
3074 is $@, "config_error\n", 'read_config - virtual section - raise config_error(43-1)';
3075 is_deeply \@config_error_args, [2, 'ERR0113', ' qosup=100'], 'read_config - virtual section - config_error args(43-1)';
3079 my $input = <<"CONFIG";
3080 virtual=localhost:http
3084 create_config($input) or skip 'cannot create config', 3;
3085 local @ld_gethostservbyname_args = ();
3086 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
3090 is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - qosup not valid format(2)';
3091 is $@, "config_error\n", 'read_config - virtual section - raise config_error(43-2)';
3092 is_deeply \@config_error_args, [2, 'ERR0113', ' qosup=1000K'], 'read_config - virtual section - config_error args(43-2)';
3096 my $input = <<"CONFIG";
3097 virtual=localhost:http
3101 create_config($input) or skip 'cannot create config', 2;
3102 local @ld_gethostservbyname_args = ();
3103 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
3107 is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - qosdown 0 ok';
3108 is $main::CONFIG{virtual}[0]{qosdown}, '0', 'read_config - virtual section - set qosdown 0 ok';
3112 my $input = <<"CONFIG";
3113 virtual=localhost:http
3117 create_config($input) or skip 'cannot create config', 2;
3118 local @ld_gethostservbyname_args = ();
3119 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
3123 is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - qosdown min kilo ok';
3124 is $main::CONFIG{virtual}[0]{qosdown}, '1K', 'read_config - virtual section - set qosdown min kilo ok';
3128 my $input = <<"CONFIG";
3129 virtual=localhost:http
3133 create_config($input) or skip 'cannot create config', 2;
3134 local @ld_gethostservbyname_args = ();
3135 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
3139 is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - qosdown max kilo ok';
3140 is $main::CONFIG{virtual}[0]{qosdown}, '999K', 'read_config - virtual section - set qosdown max kilo ok';
3144 my $input = <<"CONFIG";
3145 virtual=localhost:http
3149 create_config($input) or skip 'cannot create config', 2;
3150 local @ld_gethostservbyname_args = ();
3151 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
3155 is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - qosdown min mega ok';
3156 is $main::CONFIG{virtual}[0]{qosdown}, '1M', 'read_config - virtual section - set qosdown min mega ok';
3160 my $input = <<"CONFIG";
3161 virtual=localhost:http
3165 create_config($input) or skip 'cannot create config', 2;
3166 local @ld_gethostservbyname_args = ();
3167 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
3171 is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - qosdown max mega ok';
3172 is $main::CONFIG{virtual}[0]{qosdown}, '999M', 'read_config - virtual section - set qosdown max mega ok';
3176 my $input = <<"CONFIG";
3177 virtual=localhost:http
3181 create_config($input) or skip 'cannot create config', 2;
3182 local @ld_gethostservbyname_args = ();
3183 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
3187 is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - qosdown min giga ok';
3188 is $main::CONFIG{virtual}[0]{qosdown}, '1G', 'read_config - virtual section - set qosdown min giga ok';
3192 my $input = <<"CONFIG";
3193 virtual=localhost:http
3197 create_config($input) or skip 'cannot create config', 2;
3198 local @ld_gethostservbyname_args = ();
3199 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
3203 is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - qosdown max giga ok';
3204 is $main::CONFIG{virtual}[0]{qosdown}, '999G', 'read_config - virtual section - set qosdown max giga ok';
3208 my $input = <<"CONFIG";
3209 virtual=localhost:http
3213 create_config($input) or skip 'cannot create config', 3;
3214 local @ld_gethostservbyname_args = ();
3215 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
3219 is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - qosdown not defined';
3220 is $@, "config_error\n", 'read_config - virtual section - raise config_error(44)';
3221 is_deeply \@config_error_args, [2, 'ERR0113', ' qosdown'], 'read_config - virtual section - config_error args(44)';
3225 my $input = <<"CONFIG";
3226 virtual=localhost:http
3230 create_config($input) or skip 'cannot create config', 3;
3231 local @ld_gethostservbyname_args = ();
3232 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
3236 is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - qosdown not valid format(1)';
3237 is $@, "config_error\n", 'read_config - virtual section - raise config_error(45-1)';
3238 is_deeply \@config_error_args, [2, 'ERR0113', ' qosdown=100'], 'read_config - virtual section - config_error args(45-1)';
3242 my $input = <<"CONFIG";
3243 virtual=localhost:http
3247 create_config($input) or skip 'cannot create config', 3;
3248 local @ld_gethostservbyname_args = ();
3249 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
3253 is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - qosdown not valid format(2)';
3254 is $@, "config_error\n", 'read_config - virtual section - raise config_error(45-2)';
3255 is_deeply \@config_error_args, [2, 'ERR0113', ' qosdown= 1000M'], 'read_config - virtual section - config_error args(45-2)';
3259 my $input = <<"CONFIG";
3260 virtual=localhost:http
3261 realdowncallback = '/bin/sh'
3264 create_config($input) or skip 'cannot create config', 2;
3265 local @ld_gethostservbyname_args = ();
3266 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
3270 is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - realdowncallback ok';
3271 is $main::CONFIG{virtual}[0]{realdowncallback}, '/bin/sh', 'read_config - virtual section - set realdowncallback ok';
3275 my $input = <<"CONFIG";
3276 virtual=localhost:http
3280 create_config($input) or skip 'cannot create config', 3;
3281 local @ld_gethostservbyname_args = ();
3282 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
3286 is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - realdowncallback not defined';
3287 is $@, "config_error\n", 'read_config - virtual section - raise config_error(46)';
3288 is_deeply \@config_error_args, [2, 'ERR0117', ' realdowncallback'], 'read_config - virtual section - config_error args(46)';
3292 my $input = <<"CONFIG";
3293 virtual=localhost:http
3294 realdowncallback=/proc/1
3297 create_config($input) or skip 'cannot create config', 3;
3298 local @ld_gethostservbyname_args = ();
3299 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
3303 is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - realdowncallback cannot execute';
3304 is $@, "config_error\n", 'read_config - virtual section - raise config_error(47)';
3305 is_deeply \@config_error_args, [2, 'ERR0117', ' realdowncallback=/proc/1'], 'read_config - virtual section - config_error args(47)';
3309 my $input = <<"CONFIG";
3310 virtual=localhost:http
3311 realdowncallback=/proc/100000
3314 create_config($input) or skip 'cannot create config', 3;
3315 local @ld_gethostservbyname_args = ();
3316 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
3320 is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - realdowncallback no such file';
3321 is $@, "config_error\n", 'read_config - virtual section - raise config_error(48)';
3322 is_deeply \@config_error_args, [2, 'ERR0117', ' realdowncallback=/proc/100000'], 'read_config - virtual section - config_error args(48)';
3326 my $input = <<"CONFIG";
3327 virtual=localhost:http
3328 realdowncallback=/proc
3331 create_config($input) or skip 'cannot create config', 3;
3332 local @ld_gethostservbyname_args = ();
3333 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
3337 is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - realdowncallback directory';
3338 is $@, "config_error\n", 'read_config - virtual section - raise config_error(49)';
3339 is_deeply \@config_error_args, [2, 'ERR0117', ' realdowncallback=/proc'], 'read_config - virtual section - config_error args(49)';
3343 my $input = <<"CONFIG";
3344 virtual=localhost:http
3345 realrecovercallback = '/bin/sh'
3348 create_config($input) or skip 'cannot create config', 2;
3349 local @ld_gethostservbyname_args = ();
3350 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
3354 is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - realrecovercallback ok';
3355 is $main::CONFIG{virtual}[0]{realrecovercallback}, '/bin/sh', 'read_config - virtual section - set realrecovercallback ok';
3359 my $input = <<"CONFIG";
3360 virtual=localhost:http
3364 create_config($input) or skip 'cannot create config', 3;
3365 local @ld_gethostservbyname_args = ();
3366 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
3370 is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - realrecovercallback not defined';
3371 is $@, "config_error\n", 'read_config - virtual section - raise config_error(50)';
3372 is_deeply \@config_error_args, [2, 'ERR0117', ' realrecovercallback'], 'read_config - virtual section - config_error args(50)';
3376 my $input = <<"CONFIG";
3377 virtual=localhost:http
3378 realrecovercallback=/proc/1
3381 create_config($input) or skip 'cannot create config', 3;
3382 local @ld_gethostservbyname_args = ();
3383 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
3387 is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - realrecovercallback cannot execute';
3388 is $@, "config_error\n", 'read_config - virtual section - raise config_error(51)';
3389 is_deeply \@config_error_args, [2, 'ERR0117', ' realrecovercallback=/proc/1'], 'read_config - virtual section - config_error args(51)';
3393 my $input = <<"CONFIG";
3394 virtual=localhost:http
3395 realrecovercallback=/proc/100000
3398 create_config($input) or skip 'cannot create config', 3;
3399 local @ld_gethostservbyname_args = ();
3400 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
3404 is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - realrecovercallback no such file';
3405 is $@, "config_error\n", 'read_config - virtual section - raise config_error(52)';
3406 is_deeply \@config_error_args, [2, 'ERR0117', ' realrecovercallback=/proc/100000'], 'read_config - virtual section - config_error args(52)';
3410 my $input = <<"CONFIG";
3411 virtual=localhost:http
3412 realrecovercallback=/proc
3415 create_config($input) or skip 'cannot create config', 3;
3416 local @ld_gethostservbyname_args = ();
3417 local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
3421 is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - realrecovercallback directory';
3422 is $@, "config_error\n", 'read_config - virtual section - raise config_error(53)';
3423 is_deeply \@config_error_args, [2, 'ERR0117', ' realrecovercallback=/proc'], 'read_config - virtual section - config_error args(53)';
3428 local *read_config = \&__read_config;
3429 local $main::CONFIG{virtual} = undef;
3430 local $read_config_virtual = [ foo => 2, bar => 4 ];
3431 local $main::CONFIG{execute} = { 'foo.conf' => 1, 'bar.conf' => 1 };
3432 local $read_config_execute = { 'foo.conf' => 1, 'hoge.conf' => 1 };
3433 local $system_wrapper_return = 1;
3434 local $system_wrapper_called = 0;
3435 local @ld_cmd_children_args = ();
3437 is $system_wrapper_called, 2, 'reread_config - virtual is undef';
3438 is_deeply \@ld_cmd_children_args, [ ['stop', {'bar.conf' => 1} ], ['start', {'hoge.conf' => 1} ] ], 'reread_config - 1 old config stop, 1 new config start';
3441 local *read_config = \&__read_config;
3442 local $main::CONFIG{virtual} = [ foo => 1, bar => 2 ];
3443 local $read_config_virtual = [ foo => 2, bar => 4 ];
3444 local $main::CONFIG{execute} = undef;
3445 local $read_config_execute = { 'foo.conf' => 1, 'hoge.conf' => 1 };
3446 local $system_wrapper_return = 1;
3447 local $system_wrapper_called = 0;
3448 local @ld_cmd_children_args = ();
3450 is $system_wrapper_called, 0, 'reread_config - execute is undef';
3451 is_deeply \@ld_cmd_children_args, [ ['stop', {} ], ['start', {'foo.conf' => 1, 'hoge.conf' => 1} ] ], 'reread_config - 0 old config stop, 2 new config start';
3454 local *read_config = \&__read_config;
3455 local $main::CONFIG{virtual} = [ foo => 1, bar => 2 ];
3456 local $read_config_virtual = [ foo => 2, bar => 4 ];
3457 local $main::CONFIG{execute} = { 'foo.conf' => 1, 'bar.conf' => 1 };
3458 local $read_config_execute = { 'foo.conf' => 1, 'hoge.conf' => 1 };
3459 local $system_wrapper_return = 1;
3460 local $system_wrapper_called = 0;
3461 local @ld_cmd_children_args = ();
3463 is $system_wrapper_called, 2, 'reread_config - 1 exist config reload, but failed and then start';
3464 is_deeply \@ld_cmd_children_args, [ ['stop', {'bar.conf' => 1} ], ['start', {'hoge.conf' => 1} ] ], 'reread_config - 1 old config stop, 1 new config start';
3467 local *read_config = \&__read_config;
3468 local $main::CONFIG{virtual} = [ foo => 1, bar => 2 ];
3469 local $read_config_virtual = [ foo => 2, bar => 4 ];
3470 local $main::CONFIG{execute} = { 'foo.conf' => 1, 'bar.conf' => 1 };
3471 local $read_config_execute = { 'foo.conf' => 1, 'hoge.conf' => 1 };
3472 local $system_wrapper_return = 0;
3473 local $system_wrapper_called = 0;
3474 local $read_config_die = 1;
3475 local @ld_cmd_children_args = ();
3477 is $system_wrapper_called, 2, 'reread_config - all old config reload(1)';
3478 is_deeply \@ld_cmd_children_args, [ ['stop', {} ], ['start', {} ] ], 'reread_config - no stop / start command(1)';
3481 local *read_config = \&__read_config;
3482 local $main::CONFIG{virtual} = [ foo => 1, bar => 2 ];
3483 local $read_config_virtual = [ foo => 2, bar => 4 ];
3484 local $main::CONFIG{execute} = { 'foo.conf' => 1, 'bar.conf' => 1 };
3485 local $read_config_execute = { 'foo.conf' => 1, 'hoge.conf' => 1 };
3486 local $system_wrapper_return = 0;
3487 local $system_wrapper_called = 0;
3488 local $read_config_die = 0;
3489 local $ld_setup_die = 1;
3490 local @ld_cmd_children_args = ();
3492 is $system_wrapper_called, 2, 'reread_config - all old config reload(2)';
3493 is_deeply \@ld_cmd_children_args, [ ['stop', {} ], ['start', {} ] ], 'reread_config - no stop / start command(2)';
3497 local $main::CONFIG_FILE{path} = undef;
3498 my $got = check_cfgfile();
3499 is $got, 0, 'check_cfgfile - config file path is undef';
3503 create_config('sample');
3504 my $got = check_cfgfile();
3505 is $got, 0, 'check_cfgfile - first config file check(1)';
3506 ok $main::CONFIG_FILE{stattime} > 0, 'check_cfgfile - register mtime(1)';
3507 ok length $main::CONFIG_FILE{checksum} > 0, 'check_cfgfile - register checksum(1)';
3512 create_config('sample');
3513 my $got = check_cfgfile();
3514 is $got, 0, 'check_cfgfile - first config file check(2)';
3515 ok $main::CONFIG_FILE{stattime} > 0, 'check_cfgfile - register mtime(2)';
3516 ok length $main::CONFIG_FILE{checksum} > 0, 'check_cfgfile - register checksum(2)';
3517 my $before_mtime = $main::CONFIG_FILE{stattime};
3518 my $before_checksum = $main::CONFIG_FILE{checksum};
3520 open my $f, ">", $main::CONFIG_FILE{path};
3523 $got = check_cfgfile();
3524 is $got, 0, 'check_cfgfile - mtime change but same';
3525 ok $main::CONFIG_FILE{stattime} > $before_mtime, 'check_cfgfile - mtime change';
3526 is $main::CONFIG_FILE{checksum}, $before_checksum, 'check_cfgfile - same checksum';
3531 create_config('sample');
3532 my $got = check_cfgfile();
3533 is $got, 0, 'check_cfgfile - first config file check(3)';
3534 ok $main::CONFIG_FILE{stattime} > 0, 'check_cfgfile - register mtime(3)';
3535 ok length $main::CONFIG_FILE{checksum} > 0, 'check_cfgfile - register checksum(3)';
3536 my $before_mtime = $main::CONFIG_FILE{stattime};
3537 my $before_checksum = $main::CONFIG_FILE{checksum};
3539 open my $f, ">", $main::CONFIG_FILE{path};
3542 $got = check_cfgfile();
3543 is $got, 0, 'check_cfgfile - config change, no autoreload, no callback';
3544 ok $main::CONFIG_FILE{stattime} > $before_mtime, 'check_cfgfile - mtime change';
3545 ok $main::CONFIG_FILE{checksum} ne $before_checksum, 'check_cfgfile - checksum change';
3550 create_config('sample');
3551 $main::CONFIG{autoreload} = 1;
3552 my $got = check_cfgfile();
3553 is $got, 0, 'check_cfgfile - first config file check(4)';
3554 ok $main::CONFIG_FILE{stattime} > 0, 'check_cfgfile - register mtime(4)';
3555 ok length $main::CONFIG_FILE{checksum} > 0, 'check_cfgfile - register checksum(4)';
3556 my $before_mtime = $main::CONFIG_FILE{stattime};
3557 my $before_checksum = $main::CONFIG_FILE{checksum};
3559 open my $f, ">", $main::CONFIG_FILE{path};
3562 $got = check_cfgfile();
3563 is $got, 1, 'check_cfgfile - config change, autoreload, no callback';
3564 ok $main::CONFIG_FILE{stattime} > $before_mtime, 'check_cfgfile - mtime change';
3565 ok $main::CONFIG_FILE{checksum} ne $before_checksum, 'check_cfgfile - checksum change';
3570 create_config('sample');
3571 $main::CONFIG{autoreload} = 1;
3572 $main::CONFIG{callback} = '/bin/sh';
3573 my $got = check_cfgfile();
3574 is $got, 0, 'check_cfgfile - first config file check(4)';
3575 ok $main::CONFIG_FILE{stattime} > 0, 'check_cfgfile - register mtime(4)';
3576 ok length $main::CONFIG_FILE{checksum} > 0, 'check_cfgfile - register checksum(4)';
3577 my $before_mtime = $main::CONFIG_FILE{stattime};
3578 my $before_checksum = $main::CONFIG_FILE{checksum};
3580 open my $f, ">", $main::CONFIG_FILE{path};
3581 print $f 'callback';
3583 local $system_wrapper_called = 0;
3584 $got = check_cfgfile();
3585 is $got, 1, 'check_cfgfile - config change, autoreload, callback';
3586 ok $main::CONFIG_FILE{stattime} > $before_mtime, 'check_cfgfile - mtime change';
3587 ok $main::CONFIG_FILE{checksum} ne $before_checksum, 'check_cfgfile - checksum change';
3588 is $system_wrapper_called, 1, 'check_cfgfile - callback called';
3592 #...............................................
3594 L7lib::comment_in();
3597 $main::CONFIG_FILE{path} = time;
3598 undef $main::CONFIG_FILE{stattime};
3599 undef $main::CONFIG_FILE{checksum};
3600 $main::PROC_STAT{initialized} = 0;
3601 %main::CONFIG = %main::GLOBAL;
3605 open my $f, ">", $main::CONFIG_FILE{path} or return 0;
3611 if (-f $main::CONFIG_FILE{path}) {
3612 unlink $main::CONFIG_FILE{path};
3616 *config_error = \&__config_error;
3617 *ld_gethostservbyname = \&__ld_gethostservbyname;
3618 *parse_fallback = \&__parse_fallback;
3619 *parse_real = \&__parse_real;
3620 *ld_openlog = \&__ld_openlog;
3621 *_ld_service_resolve = \&__ld_service_resolve;
3622 *ld_setup = \&__ld_setup;
3623 *ld_cmd_children = \&__ld_cmd_children;
3624 *system_wrapper = \&__system_wrapper;
3625 *ld_log = \&__ld_log;
3626 *ld_start = \&__ld_start;
3627 *check_require_module = \&__check_require_module;
3629 sub __config_error {
3630 @config_error_args = @_;
3631 die "config_error\n";
3633 sub __ld_gethostservbyname {
3634 push @ld_gethostservbyname_args, @_;
3635 if ($ld_gethostservbyname_undef != 0) {
3636 $ld_gethostservbyname_undef--;
3637 if ($ld_gethostservbyname_undef == 0) {
3641 return $ld_gethostservbyname_return;
3643 sub __parse_fallback {
3644 push @parse_fallback_args, @_;
3645 return $parse_fallback_return;
3648 push @parse_real_args, @_;
3649 return $parse_real_return;
3652 $ld_openlog_arg = shift;
3653 return $ld_openlog_return;
3655 sub __get_hostservbyname {
3656 @get_hostservbyname_args = @_;
3657 return $get_hostservbyname_return;
3659 sub __ld_service_resolve {
3660 $_ld_service_resolve_called++;
3662 sub __ld_cmd_children {
3663 push @ld_cmd_children_args, [@_];
3665 sub __system_wrapper {
3666 $system_wrapper_called++;
3667 return $system_wrapper_return;
3670 die if $ld_setup_die;
3672 sub __check_require_module {
3677 $main::CONFIG{virtual} = $read_config_virtual;
3678 $main::CONFIG{execute} = $read_config_execute;
3679 die if $read_config_die;