OSDN Git Service

l7directord 不要テストコード削除
authormeguro <meguro@1ed66053-1c2d-0410-8867-f7571e6e31d3>
Tue, 22 Dec 2009 06:09:07 +0000 (06:09 +0000)
committermeguro <meguro@1ed66053-1c2d-0410-8867-f7571e6e31d3>
Tue, 22 Dec 2009 06:09:07 +0000 (06:09 +0000)
git-svn-id: http://10.144.169.20/repos/um/branches/l7vsd-3.x-ramiel@9310 1ed66053-1c2d-0410-8867-f7571e6e31d3

52 files changed:
l7directord/t/00_compile.t [deleted file]
l7directord/t/01_main.t [deleted file]
l7directord/t/02_cmd.t [deleted file]
l7directord/t/03_signal.t [deleted file]
l7directord/t/04_pid.t [deleted file]
l7directord/t/05_config.t [deleted file]
l7directord/t/06_convert.t [deleted file]
l7directord/t/07_parse_address.t [deleted file]
l7directord/t/08_setup.t [deleted file]
l7directord/t/09_l7vsadm.t [deleted file]
l7directord/t/10_startstop.t [deleted file]
l7directord/t/11_child_cmd.t [deleted file]
l7directord/t/12_main.t [deleted file]
l7directord/t/13_process.t [deleted file]
l7directord/t/14_health_check.t [deleted file]
l7directord/t/15_sleep.t [deleted file]
l7directord/t/16_check_func.t [deleted file]
l7directord/t/17_http.t [deleted file]
l7directord/t/18_smtp.t [deleted file]
l7directord/t/19_pop.t [deleted file]
l7directord/t/20_imap.t [deleted file]
l7directord/t/21_ldap.t [deleted file]
l7directord/t/22_nntp.t [deleted file]
l7directord/t/23_sql.t [deleted file]
l7directord/t/24_connect.t [deleted file]
l7directord/t/25_sip.t [deleted file]
l7directord/t/26_ftp.t [deleted file]
l7directord/t/27_dns.t [deleted file]
l7directord/t/28_ping.t [deleted file]
l7directord/t/29_check_other.t [deleted file]
l7directord/t/30_status.t [deleted file]
l7directord/t/31_fallback.t [deleted file]
l7directord/t/32_getid.t [deleted file]
l7directord/t/33_wrapper.t [deleted file]
l7directord/t/34_change_service.t [deleted file]
l7directord/t/35_output.t [deleted file]
l7directord/t/36_require.t [deleted file]
l7directord/t/lib/L7lib.pm [deleted file]
l7directord/t/lib/l7vsadm.1 [deleted file]
l7directord/t/lib/l7vsadm.103 [deleted file]
l7directord/t/lib/l7vsadm.104 [deleted file]
l7directord/t/lib/l7vsadm.105 [deleted file]
l7directord/t/lib/l7vsadm.106 [deleted file]
l7directord/t/lib/l7vsadm.107 [deleted file]
l7directord/t/lib/l7vsadm.108 [deleted file]
l7directord/t/lib/l7vsadm.2 [deleted file]
l7directord/t/lib/l7vsadm.3 [deleted file]
l7directord/t/lib/l7vsadm.4 [deleted file]
l7directord/t/lib/l7vsadm.5 [deleted file]
l7directord/t/lib/l7vsadm.6 [deleted file]
l7directord/t/lib/l7vsadm.7 [deleted file]
l7directord/t/lib/l7vsadm.8 [deleted file]

diff --git a/l7directord/t/00_compile.t b/l7directord/t/00_compile.t
deleted file mode 100644 (file)
index c43df9a..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-use strict;
-use warnings;
-use lib qw(t/lib lib);
-use L7lib;
-use Test::More tests => 1;
-use Socket;
-use Socket6;
-
-L7lib::chdir();
-L7lib::comment_out();
-
-SKIP: {
-    skip 'Test::More version 0.59_01 required', 1 if $Test::More::VERSION < 0.59_01;
-    require_ok('./l7directord');
-}
-
-L7lib::comment_in();
diff --git a/l7directord/t/01_main.t b/l7directord/t/01_main.t
deleted file mode 100644 (file)
index 89f9799..0000000
+++ /dev/null
@@ -1,529 +0,0 @@
-use strict;
-use warnings;
-no warnings qw(redefine once);
-use lib qw(t/lib lib);
-use File::Copy;
-use L7lib;
-use Test::More tests => 75;
-use POSIX;
-use Cwd qw(abs_path);
-use Socket;
-use Socket6;
-
-L7lib::chdir();
-L7lib::comment_out();
-require './l7directord';
-require_file();
-override();
-
-close *STDOUT;
-open  *STDOUT, '>', '/dev/null';
-close *STDERR;
-open  *STDERR, '>', '/dev/null';
-
-#...............................................
-# test start
-#   - main
-#   - parse_cmd
-#   - parse_option
-#   - initial_setting
-#   - search_config_file
-#   - search_l7vsadm_file
-
-test_default();
-
-test_argv('no ARGV',                10, qw());
-test_argv('ARGV="usage"',           10, qw(usage));
-test_argv('unknown ARGV',           10, qw(foobar hogehoge));
-test_argv('ARGV="help"',             9, qw(help));
-test_argv('ARGV="--help"',           9, qw(--help));
-test_argv('ARGV="--h"',              9, qw(--h));
-test_argv('ARGV="-h"',               9, qw(-h));
-test_argv('ARGV="version"',          8, qw(version));
-test_argv('ARGV="--version"',        8, qw(--version));
-test_argv('ARGV="-v"',               8, qw(-v));
-test_argv('ARGV="--v"',              8, qw(--v));
-test_argv('ARGV="configtest"',       7, qw(configtest));
-test_argv('ARGV="--configtest"',    10, qw(--configtest));
-test_argv('ARGV="-t"',               7, qw(-t));
-test_argv('ARGV="--t"',              7, qw(--t));
-test_argv('ARGV="--test"',          10, qw(--test));
-test_argv('ARGV="status"',           6, qw(status));
-test_argv('ARGV="reload"',           5, qw(reload));
-test_argv('ARGV="try-restart"',      4, qw(try-restart));
-test_argv('ARGV="restart"',          3, qw(restart));
-test_argv('ARGV="stop"',             2, qw(stop));
-test_argv('ARGV="start"',            1, qw(start));
-test_argv('ARGV="--help start"',     9, qw(--help start));
-test_argv('ARGV="--version stop"',   8, qw(--version stop));
-test_argv('ARGV="--help --version"', 9, qw(--help --version));
-test_argv('ARGV="-t --version"',     8, qw(-t --version));
-test_argv('ARGV="-t -d"',            7, qw(-t -d));
-
-test_argv('ARGV="-d"', 10, qw(-d));
-is $main::DEBUG_LEVEL, 3, 'default debug level';
-
-test_argv('ARGV="-d 1"', 10, qw(-d 1));
-is $main::DEBUG_LEVEL, 1, 'set debug level';
-
-test_argv('ARGV="-d 0"', 10, qw(-d 0));
-is $main::DEBUG_LEVEL, 0, 'set debug level zero';
-
-test_argv('ARGV="-d -1"', 10, qw(-d -1));
-is $main::DEBUG_LEVEL, -1, 'set debug level minus';
-
-SKIP: {
-    skip '/etc/hosts not found', 3 if (!-f '/etc/hosts');
-    test_argv('ARGV="/etc/hosts start"', 1, qw(/etc/hosts start));
-    is $main::CONFIG_FILE{path}, '/etc/hosts', 'set config path(1)';
-    is $main::CONFIG_FILE{filename}, 'hosts', 'set config filename';
-}
-
-SKIP: {
-    skip '/etc/hosts not found', 3 if (!-f '/etc/hosts');
-    test_argv('ARGV="-d 20 --version /etc/hosts start"', 8, qw(-d 20 --version /etc/hosts start));
-    is $main::DEBUG_LEVEL, 20, 'set debug level';
-    is $main::CONFIG_FILE{path}, '/etc/hosts', 'set config path';
-    is $main::CONFIG_FILE{filename}, 'hosts', 'set config filename';
-}
-
-SKIP: {
-    skip '/etc/ld.so.conf not found', 3 if (!-f '/etc/ld.so.conf');
-    test_argv('ARGV="/etc/ld.so.conf stop"', 2, qw(/etc/ld.so.conf stop));
-    is $main::CONFIG_FILE{path}, '/etc/ld.so.conf', 'set config path(2)';
-    is $main::CONFIG_FILE{filename}, 'ld.so', 'set config filename, omit ".conf"';
-}
-
-SKIP: {
-    skip '/etc/mail/sendmail.cf not found', 3 if (!-f '/etc/mail/sendmail.cf');
-    test_argv('ARGV="/etc/mail/sendmail.cf restart"', 3, qw(/etc/mail/sendmail.cf restart));
-    is $main::CONFIG_FILE{path}, '/etc/mail/sendmail.cf', 'set config path(3)';
-    is $main::CONFIG_FILE{filename}, 'sendmail', 'set config filename, omit ".cf"';
-}
-
-SKIP: {
-    skip '/a/b/c exist', 1 if (-f '/a/b/c');
-    local @ARGV = qw(/a/b/c reload);
-    eval { main(); };
-    is $@, "init_error\n", 'config not found';
-}
-
-SKIP: {
-    my $fail = 0;
-    my $made = 0;
-    if (!-f './l7directord.cf') {
-        if (!open my $f, '>', './l7directord.cf') {
-            $fail = 1;
-        } else { $made = 1; close $f; }
-    }
-    if ($fail) {
-        if ($made) { unlink './l7directord.cf'; }
-        skip 'cannot make ./l7directord.cf', 3;
-    }
-    test_argv('ARGV="reload"', 5, qw(reload));
-    is $main::CONFIG_FILE{path}, abs_path('./l7directord.cf'), 'search config path(1)';
-    is $main::CONFIG_FILE{filename}, 'l7directord', 'search config filename';
-    if ($made) { unlink './l7directord.cf'; }
-}
-
-SKIP: {
-    my $fail = 0;
-    my $made = 0;
-    my $mkdir = 0;
-    my $bak1 = 0;
-    if (-f './l7directord.cf') {
-        if (move './l7directord.cf', 'l7d.bak1') {
-            $bak1 = 1;
-        } else {
-            $fail = 1;
-        }
-    }
-    if (!$fail && !-d '/etc/ha.d/conf') {
-        if (!mkdir '/etc/ha.d/conf') {
-            $fail = 1;
-        } else { $mkdir = 1; }
-    }
-    if (!$fail && !-f '/etc/ha.d/conf/l7directord.cf') {
-        if (!open my $f, '>', '/etc/ha.d/conf/l7directord.cf') {
-            $fail = 1;
-        } else { $made = 1; }
-    }
-    if ($fail) {
-        if ($made) { unlink '/etc/ha.d/conf/l7directord.cf'; }
-        if ($mkdir) { rmdir '/etc/ha.d/conf'; }
-        if ($bak1) { move 'l7d.bak1', './l7directord.cf'; }
-        skip 'cannot make /etc/ha.d/conf/l7directord.cf', 3;
-    }
-    test_argv('ARGV="try-restart"', 4, qw(try-restart));
-    is $main::CONFIG_FILE{path}, '/etc/ha.d/conf/l7directord.cf', 'search config path(2)';
-    is $main::CONFIG_FILE{filename}, 'l7directord', 'search config filename(2)';
-    if ($made) { unlink '/etc/ha.d/conf/l7directord.cf'; }
-    if ($mkdir) { rmdir '/etc/ha.d/conf'; }
-    if ($bak1) { move 'l7d.bak1', './l7directord.cf'; }
-}
-
-SKIP: {
-    my $fail = 0;
-    my $made = 0;
-    my $mkdir = 0;
-    my $bak1 = 0;
-    my $bak2 = 0;
-    if (-f './l7directord.cf') {
-        if (move './l7directord.cf', 'l7d.bak1') {
-            $bak1 = 1;
-        } else {
-            $fail = 1;
-        }
-    }
-    if (!$fail && -f '/etc/ha.d/conf/l7directord.cf') {
-        if (move '/etc/ha.d/conf/l7directord.cf', 'l7d.bak2') {
-            $bak2 = 1;
-        } else {
-            $fail = 1;
-        }
-    }
-    if (!$fail && !-d '/etc/ha.d') {
-        if (!mkdir '/etc/ha.d') {
-            $fail = 1;
-        } else { $mkdir = 1; }
-    }
-    if (!$fail && !-f '/etc/ha.d/l7directord.cf') {
-        if (!open my $f, '>', '/etc/ha.d/l7directord.cf') {
-            $fail = 1;
-        } else { $made = 1; }
-    }
-    if ($fail) {
-        if ($made) { unlink '/etc/ha.d/l7directord.cf'; }
-        if ($mkdir) { rmdir '/etc/ha.d'; }
-        if ($bak1) { move 'l7d.bak1', './l7directord.cf'; }
-        if ($bak2) { move 'l7d.bak2', '/etc/ha.d/conf/l7directord.cf'; }
-        skip 'cannot make /etc/ha.d/l7directord.cf', 3;
-    }
-    test_argv('ARGV="restart"', 3, qw(restart));
-    is $main::CONFIG_FILE{path}, '/etc/ha.d/l7directord.cf', 'search config path(3)';
-    is $main::CONFIG_FILE{filename}, 'l7directord', 'search config filename(3)';
-    if ($made) { unlink '/etc/ha.d/l7directord.cf'; }
-    if ($mkdir) { rmdir '/etc/ha.d'; }
-    if ($bak1) { move 'l7d.bak1', './l7directord.cf'; }
-    if ($bak2) { move 'l7d.bak2', '/etc/ha.d/conf/l7directord.cf'; }
-}
-
-SKIP: {
-    my $fail = 0;
-    my $bak1 = 0;
-    my $bak2 = 0;
-    my $bak3 = 0;
-    if (-f './l7directord.cf') {
-        if (move './l7directord.cf', 'l7d.bak1') {
-            $bak1 = 1;
-        } else {
-            $fail = 1;
-        }
-    }
-    if (!$fail && -f '/etc/ha.d/conf/l7directord.cf') {
-        if (move '/etc/ha.d/conf/l7directord.cf', 'l7d.bak2') {
-            $bak2 = 1;
-        } else {
-            $fail = 1;
-        }
-    }
-    if (!$fail && -f '/etc/ha.d/l7directord.cf') {
-        if (move '/etc/ha.d/l7directord.cf', 'l7d.bak3') {
-            $bak3 = 1;
-        } else {
-            $fail = 1;
-        }
-    }
-    if ($fail) {
-        if ($bak1) { move 'l7d.bak1', './l7directord.cf'; }
-        if ($bak2) { move 'l7d.bak2', '/etc/ha.d/conf/l7directord.cf'; }
-        if ($bak2) { move 'l7d.bak3', '/etc/ha.d/l7directord.cf'; }
-        skip 'cannot move config search path file', 1;
-    }
-    local @ARGV = qw(status);
-    eval { main(); };
-    is $@, "init_error\n", 'config not found';
-    if ($bak1) { move 'l7d.bak1', './l7directord.cf'; }
-    if ($bak2) { move 'l7d.bak2', '/etc/ha.d/conf/l7directord.cf'; }
-    if ($bak2) { move 'l7d.bak3', '/etc/ha.d/l7directord.cf'; }
-}
-
-SKIP: {
-    my $fail = 0;
-    my $made = 0;
-    if (!-f './l7vsadm') {
-        if (!open my $f, '>', './l7vsadm') {
-            $fail = 1;
-        } else { $made = 1; close $f; }
-    }
-    if (!-x './l7vsadm') {
-        if (!chmod 0755, './l7vsadm') {
-            $fail = 1;
-        }
-    }
-    skip 'cannot make ./l7vsadm', 2 if ($fail);
-    test_argv('ARGV="stop"', 2, qw(stop));
-##    is $main::PROC_ENV{l7vsadm}, abs_path('./l7vsadm'), 'search l7vsadm(1)';
-    ### Test Enviroment"/home/megu/svnsource/l7vsd-3.x-ramiel/l7directord/l7vsadm"
-    is '/home/megu/svnsource/l7vsd-3.x-ramiel/l7directord/l7vsadm', abs_path('./l7vsadm'), 'search l7vsadm(1)';
-    if ($made) { unlink './l7vsadm'; }
-}
-
-SKIP: {
-    my $fail = 0;
-    my $made = 0;
-    my $mkdir = 0;
-    my $bak1 = 0;
-    if (-f './l7vsadm') {
-        if (move './l7vsadm', 'l7v.bak1') {
-            $bak1 = 1;
-        } else {
-            $fail = 1;
-        }
-    }
-    if (!$fail && !-d '/usr/sbin') {
-        if (!mkdir '/usr/sbin') {
-            $fail = 1;
-        } else { $mkdir = 1; }
-    }
-    if (!$fail && !-f '/usr/sbin/l7vsadm') {
-        if (!open my $f, '>', '/usr/sbin/l7vsadm') {
-            $fail = 1;
-        } else { $made = 1; }
-    }
-    if (!$fail && !-x '/usr/sbin/l7vsadm') {
-        if (!chmod 0755, '/usr/sbin/l7vsadm') {
-            $fail = 1;
-        }
-    }
-    skip 'cannot make /usr/sbin/l7vsadm', 2 if ($fail);
-    test_argv('ARGV="start"', 1, qw(start));
-    is $main::PROC_ENV{l7vsadm}, '/usr/sbin/l7vsadm', 'search l7vsadm(2)';
-    if ($made) { unlink './l7vsadm'; }
-    if ($mkdir) { rmdir '/usr/sbin'; }
-    if ($bak1) {
-        move 'l7v.bak1', './l7vsadm';
-        chmod '0755', './l7vsadm';
-    }
-}
-
-SKIP: {
-    my $fail = 0;
-    my $made = 0;
-    my $mkdir = 0;
-    my $bak1 = 0;
-    my $bak2 = 0;
-    if (-f './l7vsadm') {
-        if (move './l7vsadm', 'l7v.bak1') {
-            $bak1 = 1;
-        } else {
-            $fail = 1;
-        }
-    }
-    if (!$fail && -f '/usr/sbin/l7vsadm') {
-        if (move '/usr/sbin/l7vsadm', 'l7v.bak2') {
-            $bak2 = 1;
-        } else {
-            $fail = 1;
-        }
-    }
-    if (!$fail && (!-d '/sbin')) {
-        if (!mkdir '/sbin') {
-            $fail = 1;
-        } else { $mkdir = 1; }
-    }
-    if (!$fail && !-f '/sbin/l7vsadm') {
-        if (!open my $f, '>', '/sbin/l7vsadm') {
-            $fail = 1;
-        } else { $made = 1; }
-    }
-    if (!$fail && !-x '/sbin/l7vsadm') {
-        if (!chmod 0755, '/sbin/l7vsadm') {
-            $fail = 1;
-        }
-    }
-    if ($fail) {
-        if ($made) { unlink '/sbin/l7vsadm'; }
-        if ($mkdir) { rmdir '/sbin'; }
-        if ($bak1) {
-            move 'l7v.bak1', './l7vsadm';
-            chmod '0755', './l7vsadm';
-        }
-        if ($bak2) {
-            move 'l7v.bak2', '/usr/sbin/l7vsadm';
-            chmod '0755', '/usr/sbin/l7vsadm';
-        }
-        skip 'cannot make /sbin/l7vsadm', 2;
-    }
-    test_argv('ARGV="configtest"', 7, qw(configtest));
-    is $main::PROC_ENV{l7vsadm}, '/sbin/l7vsadm', 'search l7vsadm(3)';
-    if ($made) { unlink '/sbin/l7vsadm'; }
-    if ($mkdir) { rmdir '/sbin'; }
-    if ($bak1) {
-        move 'l7v.bak1', './l7vsadm';
-        chmod '0755', './l7vsadm';
-    }
-    if ($bak2) {
-        move 'l7v.bak2', '/usr/sbin/l7vsadm';
-        chmod '0755', '/usr/sbin/l7vsadm';
-    }
-}
-
-SKIP: {
-    my $fail = 0;
-    my $bak1 = 0;
-    my $bak2 = 0;
-    my $bak3 = 0;
-    if (-f './l7vsadm') {
-        if (move './l7vsadm', 'l7v.bak1') {
-            $bak1 = 1;
-        } else {
-            $fail = 1;
-        }
-    }
-    if (!$fail && -f '/usr/sbin/l7vsadm') {
-        if (move '/usr/sbin/l7vsadm', 'l7v.bak2') {
-            $bak2 = 1;
-        } else {
-            $fail = 1;
-        }
-    }
-    if (!$fail && -f '/sbin/l7vsadm') {
-        if (move '/sbin/l7vsadm', 'l7v.bak3') {
-            $bak3 = 1;
-        } else {
-            $fail = 1;
-        }
-    }
-    if ($fail) {
-        if ($bak1) {
-            move 'l7v.bak1', './l7vsadm';
-            chmod '0755', './l7vsadm';
-        }
-        if ($bak2) {
-            move 'l7v.bak2', '/usr/sbin/l7vsadm';
-            chmod '0755', '/usr/sbin/l7vsadm';
-        }
-        if ($bak3) {
-            move 'l7v.bak3', '/sbin/l7vsadm';
-            chmod '0755', '/sbin/l7vsadm';
-        }
-        skip 'cannot move l7vsadm search path file', 1;
-    }
-    local @ARGV = qw(status);
-    eval { main(); };
-    is $@, "init_error\n", 'l7vsadm not found';
-    if ($bak1) {
-        move 'l7v.bak1', './l7vsadm';
-        chmod '0755', './l7vsadm';
-    }
-    if ($bak2) {
-        move 'l7v.bak2', '/usr/sbin/l7vsadm';
-        chmod '0755', '/usr/sbin/l7vsadm';
-    }
-    if ($bak3) {
-        move 'l7v.bak3', '/sbin/l7vsadm';
-        chmod '0755', '/sbin/l7vsadm';
-    }
-}
-
-{
-    local $ENV{HOSTNAME} = 'test_host_name';
-    test_argv('ARGV="status"', 6, qw(status));
-    is $main::PROC_ENV{hostname}, 'test_host_name', 'set env HOSTNAME';
-}
-
-{
-    local $ENV{HOSTNAME};
-    test_argv('ARGV="status"', 6, qw(status));
-    is $main::PROC_ENV{hostname}, (POSIX::uname())[1], 'set HOSTNAME from uname';
-}
-    
-    
-
-sub test_default {
-    is $main::DEBUG_LEVEL,               0, 'default - debug level';
-    is $main::PROC_ENV{l7vsadm},     undef, 'default - l7vsadm path';
-    is $main::CONFIG_FILE{path},     undef, 'default - config path';
-    is $main::CONFIG_FILE{filename}, undef, 'default - config filename';
-    is $main::PROC_ENV{hostname},    undef, 'default - hostname';
-}
-
-sub test_argv {
-    my $name = shift;
-    my $expected = shift;
-    local @ARGV = @_;
-    my $return = main();
-    is $return, $expected, $name;
-}
-
-# test end
-#...............................................
-
-remove_file();
-L7lib::comment_in();
-
-sub require_file {
-    open my $d, '>', './l7directord.cf';
-    close $d;
-    open my $v, '>', './l7vsadm';
-    close $v;
-    chmod 0755, './l7vsadm';
-}
-sub remove_file {
-    unlink './l7directord.cf';
-    unlink './l7vsadm';
-}
-sub override {
-    *cmd_start       = \&__cmd_start;
-    *cmd_stop        = \&__cmd_stop;
-    *cmd_restart     = \&__cmd_restart;
-    *cmd_try_restart = \&__cmd_try_restart;
-    *cmd_reload      = \&__cmd_reload;
-    *cmd_status      = \&__cmd_status;
-    *cmd_configtest  = \&__cmd_configtest;
-    *cmd_version     = \&__cmd_version;
-    *cmd_help        = \&__cmd_help;
-    *cmd_usage       = \&__cmd_usage;
-    *init_error      = \&__init_error;
-    *ld_exit         = \&__ld_exit;
-    *ld_log          = \&__ld_log;
-}
-sub __cmd_start {
-    return 1;
-}
-sub __cmd_stop {
-    return 2;
-}
-sub __cmd_restart {
-    return 3;
-}
-sub __cmd_try_restart {
-    return 4;
-}
-sub __cmd_reload {
-    return 5;
-}
-sub __cmd_status {
-    return 6;
-}
-sub __cmd_configtest {
-    return 7;
-}
-sub __cmd_version {
-    return 8;
-}
-sub __cmd_help {
-    return 9;
-}
-sub __cmd_usage {
-    return 10;
-}
-sub __init_error {
-    die "init_error\n";
-}
-sub __ld_exit {
-    return shift;
-}
-sub __ld_log {
-}
diff --git a/l7directord/t/02_cmd.t b/l7directord/t/02_cmd.t
deleted file mode 100644 (file)
index d14212a..0000000
+++ /dev/null
@@ -1,364 +0,0 @@
-use strict;
-use warnings;
-no warnings qw(redefine once);
-use lib qw(t/lib lib);
-use L7lib;
-use Test::More tests => 73;
-use Socket;
-use Socket6;
-
-L7lib::chdir();
-L7lib::comment_out();
-require './l7directord';
-override();
-default_value();
-
-our $signal = undef;
-our $read_config_called = 0;
-our $ld_log_called = 0;
-our @read_pid_return = ();
-our @children_command = ();
-our $system_command = undef;
-our $cmd_start_return = undef;
-our $cmd_stop_return = undef;
-our $set_ld_handler_called = 0;
-our $ld_setup_called = 0;
-our $ld_daemon_called = 0;
-our $run_pid = 0;
-our $ld_main_called = 0;
-our $remove_pid_called = 0;
-
-close *STDOUT;
-open  *STDOUT, '>', '/dev/null';
-close *STDERR;
-open  *STDERR, '>', '/dev/null';
-
-#...............................................
-# test start
-#   - cmd_start
-{
-    local $set_ld_handler_called = 0;
-    local $read_config_called    = 0;
-    local $ld_setup_called       = 0;
-    local @read_pid_return       = ();
-    local $ld_log_called         = 0;
-    local $ld_daemon_called      = 0;
-    local $run_pid               = 0;
-    local @children_command      = ();
-    local $remove_pid_called     = 0;
-    my $got = cmd_start();
-    is $got, 0, 'cmd_start - run as daemon';
-    is $set_ld_handler_called, 1, 'cmd_start - set_ld_handler';
-    is $read_config_called, 1, 'cmd_start - read_config';
-    is $ld_setup_called, 1, 'cmd_start - ld_setup';
-    is $ld_log_called, 2, 'cmd_start - ld_log';
-    is $ld_daemon_called, 1, 'cmd_start - ld_daemon';
-    is $main::PROC_STAT{pid}, $$, 'cmd_start - save pid';
-    is $run_pid, $$, 'cmd_start - write_pid';
-    is_deeply \@children_command, ['start', 'stop'], 'cmd_start - ld_cmd_children';
-    is $ld_main_called, 1, 'cmd_start - ld_main';
-    is $remove_pid_called, 1, 'cmd_start - remove_pid';
-}
-{
-    local $set_ld_handler_called = 0;
-    local $read_config_called    = 0;
-    local $ld_setup_called       = 0;
-    local @read_pid_return       = ();
-    local $ld_log_called         = 0;
-    local $ld_daemon_called      = 0;
-    local $run_pid               = 0;
-    local @children_command      = ();
-    local $ld_main_called        = 0;
-    local $remove_pid_called     = 0;
-    local $main::CONFIG{supervised} = 1;
-    local $main::DEBUG_LEVEL     = 0;
-    local $main::PROC_STAT{pid}  = 10000;
-    my $got = cmd_start();
-    is $got, 0, 'cmd_start - run supervised mode';
-    is $set_ld_handler_called, 1, 'cmd_start - set_ld_handler';
-    is $read_config_called, 1, 'cmd_start - read_config';
-    is $ld_setup_called, 1, 'cmd_start - ld_setup';
-    is $ld_log_called, 2, 'cmd_start - ld_log';
-    is $ld_daemon_called, 0, 'cmd_start - no ld_daemon';
-    is $run_pid, 10000, 'cmd_start - write_pid';
-    is_deeply \@children_command, ['start', 'stop'], 'cmd_start - ld_cmd_children';
-    is $ld_main_called, 1, 'cmd_start - ld_main';
-    is $remove_pid_called, 1, 'cmd_start - remove_pid';
-}
-{
-    local $set_ld_handler_called = 0;
-    local $read_config_called    = 0;
-    local $ld_setup_called       = 0;
-    local @read_pid_return       = ();
-    local $ld_log_called         = 0;
-    local $ld_daemon_called      = 0;
-    local $run_pid               = 0;
-    local @children_command      = ();
-    local $ld_main_called        = 0;
-    local $remove_pid_called     = 0;
-    local $main::CONFIG{supervised} = 0;
-    local $main::DEBUG_LEVEL     = 3;
-    local $main::PROC_STAT{pid}  = 20000;
-    my $got = cmd_start();
-    is $got, 0, 'cmd_start - run debug mode';
-    is $set_ld_handler_called, 1, 'cmd_start - set_ld_handler';
-    is $read_config_called, 1, 'cmd_start - read_config';
-    is $ld_setup_called, 1, 'cmd_start - ld_setup';
-    is $ld_log_called, 2, 'cmd_start - ld_log';
-    is $ld_daemon_called, 0, 'cmd_start - no ld_daemon';
-    is $run_pid, 20000, 'cmd_start - write_pid';
-    is_deeply \@children_command, ['start', 'stop'], 'cmd_start - ld_cmd_children';
-    is $ld_main_called, 1, 'cmd_start - ld_main';
-    is $remove_pid_called, 1, 'cmd_start - remove_pid';
-}
-{
-    local $set_ld_handler_called = 0;
-    local $read_config_called    = 0;
-    local $ld_setup_called       = 0;
-    local @read_pid_return       = (100);
-    my $got = cmd_start();
-    is $got, 1, 'cmd_start - already running';
-    is $set_ld_handler_called, 1, 'cmd_start - set_ld_handler';
-    is $read_config_called, 1, 'cmd_start - read_config';
-    is $ld_setup_called, 1, 'cmd_start - ld_setup';
-}
-#   - cmd_stop
-{
-    local @read_pid_return = ();
-    my $got = cmd_stop();
-    is $got, 2, 'cmd_stop - not running(1)';
-}
-{
-    local @read_pid_return = (undef, undef);
-    my $got = cmd_stop();
-    is $got, 2, 'cmd_stop - not running(2)';
-}
-{
-    local @read_pid_return = (undef, 100);
-    my $got = cmd_stop();
-    is $got, 2, 'cmd_stop - stale pid exist';
-}
-##{
-##    local $SIG{TERM} = sub { $signal = shift; };
-##    local @read_pid_return = ($$);
-##    my $got = cmd_stop();
-##    is $got, 0, 'cmd_stop - running';
-##    is $signal, 'TERM', 'cmd_stop - signal send';
-##}
-{
-    local @read_pid_return = (99999);
-    local $ld_log_called = 0;
-    my $got = cmd_stop();
-    is $got, 3, 'cmd_stop - signal error';
-    is $ld_log_called, 0, 'cmd_stop - ld_log';
-}
-#   - cmd_restart
-{
-    local *cmd_start = \&__cmd_start;
-    local *cmd_stop  = \&__cmd_stop;
-    {
-        local $cmd_stop_return  = 0;
-        local $cmd_start_return = 0;
-        my $got = cmd_restart();
-        is $got, 0, 'cmd_restart - stop success, start success';
-    }
-    {
-        local $cmd_stop_return  = 0;
-        local $cmd_start_return = 1;
-        my $got = cmd_restart();
-        is $got, 1, 'cmd_restart - stop success, start fail';
-    }
-    {
-        local $cmd_stop_return  = 1;
-        local $cmd_start_return = 0;
-        my $got = cmd_restart();
-        is $got, 0, 'cmd_restart - stop fail, start success';
-    }
-    {
-        local $cmd_stop_return  = 1;
-        local $cmd_start_return = 1;
-        my $got = cmd_restart();
-        is $got, 1, 'cmd_restart - stop fail, start fail';
-    }
-}
-#   - cmd_try_restart
-{
-    local *cmd_start = \&__cmd_start;
-    local *cmd_stop  = \&__cmd_stop;
-    {
-        local $cmd_stop_return  = 0;
-        local $cmd_start_return = 0;
-        my $got = cmd_try_restart();
-        is $got, 0, 'cmd_try_restart - stop success, start success';
-    }
-    {
-        local $cmd_stop_return  = 0;
-        local $cmd_start_return = 1;
-        my $got = cmd_try_restart();
-        is $got, 1, 'cmd_try_restart - stop success, start fail';
-    }
-    {
-        local $cmd_stop_return  = 2;
-        my $got = cmd_try_restart();
-        is $got, 2, 'cmd_try_restart - stop fail';
-    }
-}
-#   - cmd_reload
-{
-    local $read_config_called = 0;
-    local @read_pid_return = ();
-    my $got = cmd_reload();
-    is $got, 2, 'cmd_reload - not running(1)';
-    is $read_config_called, 1, 'cmd_reload - read_config';
-}
-{
-    local $read_config_called = 0;
-    local @read_pid_return = (undef, undef);
-    my $got = cmd_reload();
-    is $got, 2, 'cmd_reload - not running(2)';
-    is $read_config_called, 1, 'cmd_reload - read_config';
-}
-{
-    local $read_config_called = 0;
-    local @read_pid_return = (undef, 100);
-    my $got = cmd_reload();
-    is $got, 2, 'cmd_reload - stale pid exist';
-    is $read_config_called, 1, 'cmd_reload - read_config';
-}
-{
-    local $SIG{HUP} = sub { $signal = shift; };
-    local $read_config_called = 0;
-    local @read_pid_return = ($$);
-    my $got = cmd_reload();
-    is $got, 0, 'cmd_reload - running';
-    is $read_config_called, 1, 'cmd_reload - read_config';
-    is $signal, 'HUP', 'cmd_reload - signal send';
-}
-{
-    local $read_config_called = 0;
-    local $ld_log_called = 0;
-    local @read_pid_return = (99999);
-    my $got = cmd_reload();
-    is $got, 3, 'cmd_reload - signal error';
-    is $read_config_called, 1, 'cmd_reload - read_config';
-    is $ld_log_called, 0, 'cmd_reload - ld_log';
-}
-#   - cmd_status
-{
-    local @read_pid_return = ();
-    local @children_command = ();
-    my $got = cmd_status();
-    is $got, 2, 'cmd_status - not running(1)';
-    is_deeply \@children_command, ['status'], 'status - ld_cmd_children';
-}
-{
-    local @read_pid_return = (undef, undef);
-    local @children_command = ();
-    my $got = cmd_status();
-    is $got, 2, 'cmd_status - not running(2)';
-    is_deeply \@children_command, ['status'], 'status - ld_cmd_children';
-}
-{
-    local @children_command = ();
-    local @read_pid_return = (999);
-    my $got = cmd_status();
-    is $got, 0, 'cmd_status - running';
-    is_deeply \@children_command, ['status'], 'status - ld_cmd_children';
-}
-{
-    local @children_command = ();
-    local @read_pid_return = (undef, 1000);
-    my $got = cmd_status();
-    is $got, 2, 'cmd_status - stale pid exist';
-    is_deeply \@children_command, ['status'], 'status - ld_cmd_children';
-}
-#   - cmd_configtest
-{
-    local $read_config_called = 0;
-    my $got = cmd_configtest();
-    is $got, 0, 'cmd_configtest';
-    is $read_config_called, 1, 'configtest - read_config';
-}
-#   - cmd_version
-{
-    my $got = cmd_version();
-    is $got, 0, 'cmd_version';
-}
-#   - cmd_help
-{
-    local $system_command = undef;
-    $main::PROC_ENV{l7directord} = '_l7directord_';
-    my $got = cmd_help();
-    is $got, 0, 'cmd_help';
-    is $system_command, '/usr/bin/perldoc _l7directord_', 'perldoc command';
-}
-#   - cmd_usage
-{
-    my $got = cmd_usage();
-    is $got, 0, 'cmd_usage';
-}
-
-
-# test end
-#...............................................
-
-L7lib::comment_in();
-
-sub default_value {
-    $main::CONFIG_FILE{filename} = 'filename';
-    $main::CONFIG_FILE{path}     = '/path/filename';
-    $main::CONFIG{supervised}    = 0;
-    $main::DEBUG_LEVEL           = 0;
-}
-sub override {
-    *set_ld_handler  = \&__set_ld_handler;
-    *read_config     = \&__read_config;
-    *ld_setup        = \&__ld_setup;
-    *read_pid        = \&__read_pid;
-    *write_pid       = \&__write_pid;
-    *ld_cmd_children = \&__ld_cmd_children;
-    *ld_main         = \&__ld_main;
-    *remove_pid      = \&__remove_pid;
-    *system_wrapper  = \&__system_wrapper;
-    *ld_log          = \&__ld_log;
-    *ld_daemon       = \&__ld_daemon;
-}
-sub __cmd_start {
-    return $cmd_start_return;
-}
-sub __cmd_stop {
-    return $cmd_stop_return;
-}
-sub __set_ld_handler {
-    $set_ld_handler_called++;
-}
-sub __read_config {
-    $read_config_called++;
-}
-sub __ld_setup {
-    $ld_setup_called++;
-}
-sub __read_pid {
-    return wantarray ? @read_pid_return : $read_pid_return[0];
-}
-sub __write_pid {
-    $run_pid = shift;
-}
-sub __ld_cmd_children {
-    push @children_command, @_;
-}
-sub __ld_main {
-    $ld_main_called++;
-}
-sub __remove_pid {
-    $remove_pid_called++;
-}
-sub __system_wrapper {
-    $system_command = shift;
-}
-sub __ld_log {
-    $ld_log_called++;
-}
-sub __ld_daemon {
-    $ld_daemon_called++;
-}
diff --git a/l7directord/t/03_signal.t b/l7directord/t/03_signal.t
deleted file mode 100644 (file)
index 70b90d3..0000000
+++ /dev/null
@@ -1,126 +0,0 @@
-use strict;
-use warnings;
-no warnings qw(redefine once);
-use lib qw(t/lib lib);
-use L7lib;
-use Test::More tests => 26;
-use Socket;
-use Socket6;
-
-L7lib::chdir();
-L7lib::comment_out();
-require './l7directord';
-
-override();
-
-#...............................................
-# test start
-#   - set_ld_handler
-set_ld_handler();
-{
-    default_value();
-    # PIPE (ignore)
-    kill 13, $$;
-    is $main::PROC_STAT{halt  }, undef,  'signal PIPE, not halt';
-    is $main::PROC_STAT{reload}, undef,  'signal PIPE, not reload';
-}
-#   - ld_handler_term
-{
-    default_value();
-    # INT
-    kill 2, $$;
-    is $main::PROC_STAT{halt  }, 'INT',  'signal INT, halt';
-    is $main::PROC_STAT{reload}, undef,  'signal INT, not reload';
-}
-{
-    default_value();
-    # QUIT
-    kill 3, $$;
-    is $main::PROC_STAT{halt  }, 'QUIT',  'signal QUIT, halt';
-    is $main::PROC_STAT{reload},  undef,  'signal QUIT, not reload';
-}
-{
-    default_value();
-    # ILL
-    kill 4, $$;
-    is $main::PROC_STAT{halt  }, 'ILL',  'signal ILL, halt';
-    is $main::PROC_STAT{reload}, undef,  'signal ILL, not reload';
-}
-{
-    default_value();
-    # ABRT
-    kill 6, $$;
-    is $main::PROC_STAT{halt  }, 'ABRT',  'signal ABRT, halt';
-    is $main::PROC_STAT{reload},  undef,  'signal ABRT, not reload';
-}
-{
-    default_value();
-    # FPE
-    kill 8, $$;
-    is $main::PROC_STAT{halt  }, 'FPE',  'signal FPE, halt';
-    is $main::PROC_STAT{reload}, undef,  'signal FPE, not reload';
-}
-{
-    default_value();
-    # SEGV
-    kill 11, $$;
-    is $main::PROC_STAT{halt  }, 'SEGV',  'signal SEGV, halt';
-    is $main::PROC_STAT{reload},  undef,  'signal SEGV, not reload';
-}
-{
-    default_value();
-    # TERM
-    kill 15, $$;
-    is $main::PROC_STAT{halt  }, 'TERM',  'signal TERM, halt';
-    is $main::PROC_STAT{reload},  undef,  'signal TERM, not reload';
-}
-{
-    default_value();
-    # BUS
-    kill 7, $$;
-    is $main::PROC_STAT{halt  }, 'BUS',  'signal BUS, halt';
-    is $main::PROC_STAT{reload}, undef,  'signal BUS, not reload';
-}
-{
-    default_value();
-    # SYS
-    kill 31, $$;
-    is $main::PROC_STAT{halt  }, 'SYS',  'signal SYS, halt';
-    is $main::PROC_STAT{reload}, undef,  'signal SYS, not reload';
-}
-{
-    default_value();
-    # XCPU
-    kill 24, $$;
-    is $main::PROC_STAT{halt  }, 'XCPU',  'signal XCPU, halt';
-    is $main::PROC_STAT{reload},  undef,  'signal XCPU, not reload';
-}
-{
-    default_value();
-    # XFSZ
-    kill 25, $$;
-    is $main::PROC_STAT{halt  }, 'XFSZ',  'signal XFSZ, halt';
-    is $main::PROC_STAT{reload},  undef,  'signal XFSZ, not reload';
-}
-#   - ld_handler_hup
-{
-    default_value();
-    # HUP
-    kill 1, $$;
-    is $main::PROC_STAT{halt  }, undef,  'signal HUP, not halt';
-    is $main::PROC_STAT{reload}, 'HUP',  'signal HUP, reload';
-}
-# test end
-#...............................................
-
-L7lib::comment_in();
-
-sub default_value {
-    undef $main::PROC_STAT{halt  };
-    undef $main::PROC_STAT{reload};
-}
-sub override {
-    *ld_log = \&__ld_log;
-}
-sub __ld_log {
-}
diff --git a/l7directord/t/04_pid.t b/l7directord/t/04_pid.t
deleted file mode 100644 (file)
index 91a40d2..0000000
+++ /dev/null
@@ -1,235 +0,0 @@
-use strict;
-use warnings;
-no warnings qw(redefine once);
-use lib qw(t/lib lib);
-use subs qw(print);
-use Cwd;
-use L7lib;
-use Test::More tests => 33;
-use Socket;
-use Socket6;
-
-L7lib::chdir();
-L7lib::comment_out();
-require './l7directord';
-override();
-
-our $filename = undef;
-our @message_only_args = ();
-our @message_args = ();
-our $init_error_arg = undef;
-our $ld_rm_file_arg = undef;
-our $ld_log_arg = undef;
-
-#...............................................
-# test start
-#   - read_pid
-{
-    default_value();
-    create_pidfile($$);
-    local $0 = 'l7directord';
-    my ($oldpid, $filepid) = read_pid();
-    is $oldpid,  $$, 'read_pid - from /proc/pid';
-    is $filepid, $$, 'read_pid - from pid file';
-    remove_pidfile();
-} 
-{
-    default_value();
-    create_pidfile($$);
-    local $0 = 'l7directord';
-    my $oldpid = read_pid();
-    is $oldpid,  $$, 'read_pid - get /proc/pid only';
-    remove_pidfile();
-} 
-{
-    default_value();
-    create_pidfile($$);
-    local $0 = 'foobar';
-    my ($oldpid, $filepid) = read_pid();
-    is $oldpid,  undef, 'read_pid - from /proc/pid, but process name mismatch';
-    is $filepid, $$,    'read_pid - from pid file';
-    remove_pidfile();
-} 
-{
-    default_value();
-    create_pidfile($$);
-    local $0 = 'foobar';
-    my $oldpid = read_pid();
-    is $oldpid,  undef, 'read_pid - get /proc/pid only, but process name mismatch';
-    remove_pidfile();
-} 
-{
-    default_value();
-    create_pidfile(99999);
-    local $0 = 'l7directord';
-    my ($oldpid, $filepid) = read_pid();
-    is $oldpid,  undef, 'read_pid - from /proc/pid, but no such proc file.';
-    is $filepid, 99999, 'read_pid - from pid file';
-    remove_pidfile();
-} 
-{
-    default_value();
-    local $0 = 'l7directord';
-    my ($oldpid, $filepid) = read_pid();
-    is $oldpid,  undef, 'read_pid - from /proc/pid';
-    is $filepid, undef, 'read_pid - from pid file, but no such pid file.';
-    remove_pidfile();
-} 
-#   - write_pid
-{
-    default_value();
-    remove_pidfile();
-    local @message_only_args = ();
-    local $init_error_arg    = undef;
-    write_pid(1);
-    my $written = read_pidfile();
-    is $written, "1\n", 'write_pid - pid 1 specified';
-    remove_pidfile();
-}
-{
-    default_value();
-    remove_pidfile();
-    local @message_only_args = ();
-    local $init_error_arg    = undef;
-    write_pid(0);
-    is_deeply \@message_only_args, ['ERR0412', 0], 'write_pid - pid 0 specified, error message';
-    is $init_error_arg, "message_only", 'write_pid - pid 0 specified, init_error';
-    remove_pidfile();
-}
-{
-    default_value();
-    remove_pidfile();
-    local @message_only_args = ();
-    local $init_error_arg    = undef;
-    write_pid();
-    is_deeply \@message_only_args, ['ERR0412', 'undef'], 'write_pid - pid not specified, error message';
-    is $init_error_arg, "message_only", 'write_pid - pid not specified, init_error';
-    remove_pidfile();
-}
-{
-    default_value();
-    remove_pidfile();
-    local @message_only_args = ();
-    local $init_error_arg    = undef;
-    write_pid('foobar');
-    is_deeply \@message_only_args, ['ERR0412', 'foobar'], 'write_pid - pid some word specified, error message';
-    is $init_error_arg, "message_only", 'write_pid - pid some word specified, init_error';
-    remove_pidfile();
-}
-{
-    default_value();
-    remove_pidfile();
-    local @message_only_args = ();
-    local $init_error_arg    = undef;
-    local *close = \&__close;
-    write_pid(1);
-    is_deeply \@message_only_args, ['ERR0409', $filename, "close_error\n"], 'write_pid - close error';
-    is $init_error_arg, "message_only", 'write_pid - close error, init_error';
-    remove_pidfile();
-}
-#   - remove_pid
-{
-    default_value();
-    local *ld_rm_file = \&__ld_rm_file;
-    remove_pid();
-    is $ld_rm_file_arg, $filename, 'remove_pid';
-}
-#   - ld_rm_file
-{
-    default_value();
-    create_pidfile(1);
-    my $got = ld_rm_file($filename);
-    is $got, 0, 'ld_rm_file - success';
-}
-{
-    default_value();
-    my $got = ld_rm_file();
-    is $got, -1, 'ld_rm_file - error no delete file';
-    is_deeply \@message_args, ['ERR0411'], 'ld_rm_file - error message(1)';
-    is $ld_log_arg, 'message', 'ld_rm_file - error log(1)';
-}
-SKIP: {
-    default_value();
-    skip '/tmp not found!', 3 if (!-d '/tmp');
-    my $got = ld_rm_file('/tmp');
-    is $got, -1, 'ld_rm_file - error directory';
-    is_deeply \@message_args, ['ERR0401', '/tmp'], 'ld_rm_file - error message(2)';
-    is $ld_log_arg, 'message', 'ld_rm_file - error log(2)';
-}
-SKIP: {
-    default_value();
-    skip 'file /asdfasdf exist', 3 if (-e '/asdfasdf');
-    my $got = ld_rm_file('/asdfasdf');
-    is $got, -1, 'ld_rm_file - error file not found';
-    is_deeply \@message_args, ['ERR0402', '/asdfasdf'], 'ld_rm_file - error message(3)';
-    is $ld_log_arg, 'message', 'ld_rm_file - error log(3)';
-}
-SKIP: {
-    default_value();
-    skip 'file /proc/version not exist', 3 if (!-f '/proc/version');
-    my $got = ld_rm_file('/proc/version');
-    is $got, -1, 'ld_rm_file - error cannot remove';
-    is_deeply \@message_args, ['ERR0403', '/proc/version', $!], 'ld_rm_file - error message(4)';
-    is $ld_log_arg, 'message', 'ld_rm_file - error log(4)';
-}
-# test end
-#...............................................
-
-L7lib::comment_in();
-
-sub default_value {
-    $main::PROC_ENV{pid_prefix}  = cwd;
-    $main::CONFIG_FILE{filename} = time;
-}
-sub override {
-    *_message_only = \&__message_only;
-    *_message      = \&__message;
-    *ld_log        = \&__ld_log;
-    *init_error    = \&__init_error;
-}
-sub create_pidfile {
-    my $pid = shift;
-    $filename = $main::PROC_ENV{pid_prefix} . q{.} . $main::CONFIG_FILE{filename} . '.pid';
-    if (open my $f, ">", $filename) {
-        print $f $pid . "\n";
-        close $f;
-        return 1;
-    }
-    return 0;
-}
-sub read_pidfile {
-    $filename = $main::PROC_ENV{pid_prefix} . q{.} . $main::CONFIG_FILE{filename} . '.pid';
-    my $pidinfo = undef;
-    if (open my $f, "<", $filename) {
-        local $\ = undef;
-        $pidinfo = <$f>;
-        close $f;
-    }
-    return $pidinfo;
-}
-sub remove_pidfile {
-    $filename = $main::PROC_ENV{pid_prefix} . q{.} . $main::CONFIG_FILE{filename} . '.pid';
-    if (-f $filename) {
-        unlink $filename;
-    }
-}
-sub __message_only {
-    @message_only_args = @_;
-    return 'message_only';
-}
-sub __init_error {
-    $init_error_arg = shift;
-}
-sub __close {
-    die "close_error\n";
-}
-sub __ld_rm_file {
-    $ld_rm_file_arg = shift;
-}
-sub __ld_log {
-    $ld_log_arg = shift;
-}
-sub __message {
-    @message_args = @_;
-    return 'message';
-}
diff --git a/l7directord/t/05_config.t b/l7directord/t/05_config.t
deleted file mode 100644 (file)
index 5f74a42..0000000
+++ /dev/null
@@ -1,4771 +0,0 @@
-use strict;
-use warnings;
-no warnings qw(redefine once);
-use lib qw(t/lib lib);
-use subs qw(print);
-use Cwd;
-use L7lib;
-use Test::More tests => 733;
-
-L7lib::chdir();
-L7lib::comment_out();
-require './l7directord';
-override();
-
-our @config_error_args            = ();
-our @ld_gethostservbyname_args    = undef;
-our $ld_gethostservbyname_return  = undef;
-our $ld_gethostservbyname_undef   = 0;
-our $_ld_service_resolve_called   = 0;
-our @parse_fallback_args          = ();
-our $parse_fallback_return        = undef;
-our @parse_real_args              = ();
-our $parse_real_return            = undef;
-our $ld_openlog_arg               = ();
-our $ld_openlog_return            = undef;
-our @get_hostservbyname_args      = ();
-our $get_hostservbyname_return    = undef;
-our @ld_cmd_children_args         = ();
-our $system_wrapper_called        = 0;
-our $system_wrapper_return        = undef;
-our $ld_setup_die                 = 0;
-our $read_config_die              = 0;
-our $read_config_virtual          = [];
-our $read_config_execute          = {};
-#...............................................
-# test start
-#   - read_config
-#   - validate_config
-SKIP: {
-    my $input = <<"CONFIG";
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 2;
-    read_config();
-    is $main::PROC_STAT{initialized}, 1, 'read_config - empty config';
-    is_deeply \%main::CONFIG, \%main::GLOBAL, 'read_config - not set anything(1)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-               # comment
-
-      # comment
-
-       # comment
-
-  # comment
-
-# comment
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 2;
-    read_config();
-    is $main::PROC_STAT{initialized}, 1, 'read_config - ignore comment';
-    is_deeply \%main::CONFIG, \%main::GLOBAL, 'read_config - not set anything(2)';
-    remove_config();
-}
-{
-    default_value();
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - no such config file';
-    is $@, "config_error\n", 'read_config - raise config_error(3)';
-    is_deeply \@config_error_args, [0, 'ERR0407', $main::CONFIG_FILE{path}], 'read_config - config_error args(3)';
-    is_deeply \%main::CONFIG, \%main::GLOBAL, 'read_config - not set anything(3)';
-}
-SKIP: {
-    my $input = <<"CONFIG";
-    #
-#
-           
-virtual = virtual_value1       
-virtual = "virtual_value2"     # comment
-checktimeout =1   
-negotiatetimeout=      2
-checkinterval=3
-retryinterval='4'
-configinterval="5"
-checkcount = 6
-autoreload = 'no'
-quiescent  = yes       # comment
-fallback=fallback_value
-callback=/bin/cat
-
-execute= /etc/hosts
-logfile=       "logfile_value"
-               #
-supervised
-
-virtual = "virtual_value3"     # comment
-       real = real_value1
-        real = real_value2
-       request='request'
-    #
-    receive = receive
-               login= "login"
-
-      passwd = "passwd"
-       database = database
-        virtualhost='virtualhost'
-    checktype = CoNnEcT
-       checktimeout =1   
-        
-       negotiatetimeout    =   2
-       checkinterval=3
-       retryinterval='4'
-       checkcount = 6
-       maxconn=7
-        checkport = 10000
-      scheduler = rr
-    protocol= tcp
-      service = http
-        httpmethod = 'hEaD'
-    fallback = fallback_value
-      quiescent="yes"
- #
-    module = url    --pattern-match   "/foo/bar" # comment
-
-        sorryserver= sorryserver_value
-    qosup  = '0'
-    qosdown =999M
-
-    realdowncallback=/bin/cat
-    realrecovercallback = '/bin/cat'
-
-        customcheck  = "/bin/echo"
-    #
-
-virtual = "virtual_value4"     # comment
-        real = real_value3
-        accesslog_rotate_rotation_timing = date
-
-    #
-# end comment...
-CONFIG
-    my %config = (
-        'autoreload' => 0,
-        'checktimeout' => 1,
-        'quiescent' => 1,
-        'retryinterval' => 4,
-        'negotiatetimeout' => 2,
-        'checkinterval' => 3,
-        'supervised' => 1,
-        'fallback' => { 'tcp' => 'fallback_return' },
-        'configinterval' => 5,
-        'execute' => { '/etc/hosts' => 1 },
-        'callback' => '/bin/cat',
-        'checkcount' => 6,
-        'logfile' => 'logfile_value',
-        'virtual' => [
-            {
-                'protocol' => 'tcp',
-                'httpmethod' => 'GET',
-                'qosdown' => 0,
-                'retryinterval' => undef,
-                'negotiatetimeout' => undef,
-                'checkinterval' => undef,
-                'server' => {},
-                'qosup' => 0,
-                'real' => undef,
-                'module' => { 'name' => 'sessionless', 'key' => '' },
-                'checktimeout' => undef,
-                'request' => undef,
-                'checktype' => 'negotiate',
-                'virtualhost' => undef,
-                'quiescent' => undef,
-                'realrecovercallback' => undef,
-                'sorryserver' => undef,
-                'service' => undef,
-                'login' => '',
-                'fallback' => undef,
-                'passwd' => '',
-                'receive' => undef,
-                'database' => '',
-                'maxconn' => 0,
-                'checkcount' => undef,
-                'checkport' => undef,
-                'scheduler' => 'rr',
-                'realdowncallback' => undef,
-                'customcheck' => undef,
-                'accesslog_rotate_rotation_timing' => undef,
-                'accesslog_rotate_max_filesize' => undef,
-            },
-            {
-                'protocol' => 'tcp',
-                'httpmethod' => 'GET',
-                'qosdown' => 0,
-                'retryinterval' => undef,
-                'negotiatetimeout' => undef,
-                'checkinterval' => undef,
-                'server' => {},
-                'qosup' => 0,
-                'real' => undef,
-                'module' => { 'name' => 'sessionless', 'key' => '' },
-                'checktimeout' => undef,
-                'request' => undef,
-                'checktype' => 'negotiate',
-                'virtualhost' => undef,
-                'quiescent' => undef,
-                'realrecovercallback' => undef,
-                'sorryserver' => undef,
-                'service' => undef,
-                'login' => '',
-                'fallback' => undef,
-                'passwd' => '',
-                'receive' => undef,
-                'database' => '',
-                'maxconn' => 0,
-                'checkcount' => undef,
-                'checkport' => undef,
-                'scheduler' => 'rr',
-                'realdowncallback' => undef,
-                'customcheck' => undef,
-                'accesslog_rotate_rotation_timing' => undef,
-                'accesslog_rotate_max_filesize' => undef,
-            },
-##            {
-##                'protocol' => 'tcp',
-##                'httpmethod' => 'HEAD',
-##                'qosdown' => '999M',
-##                'retryinterval' => 4,
-##                'negotiatetimeout' => 2,
-##                'checkinterval' => 3,
-##                'server' => {},
-##                'qosup' => '0',
-##                'real' => ['real', 'real'],
-##                'module' => {
-##                    'name' => 'url',
-##                    'option' => '--pattern-match   /foo/bar',
-##                    'key' => '--pattern-match /foo/bar'
-##                    },
-##                'checktimeout' => 1,
-##                'request' => 'request',
-##                'checktype' => 'connect',
-##                'virtualhost' => 'virtualhost',
-##                'quiescent' => 1,
-##                'realrecovercallback' => '/bin/cat',
-##                'sorryserver' => {},
-##                'service' => 'http',
-##                'login' => 'login',
-##                'fallback' => { 'tcp' => 'fallback_return' },
-##                'passwd' => 'passwd',
-##                'receive' => 'receive',
-##                'database' => 'database',
-##                'maxconn' => 7,
-##                'checkcount' => 6,
-##                'checkport' => 10000,
-##                'scheduler' => 'rr',
-##                'realdowncallback' => '/bin/cat',
-##                'customcheck' => '/bin/echo',
-##            },
-            {
-                'protocol' => 'tcp',
-                'httpmethod' => 'GET',
-                'qosdown' => 0,
-                'retryinterval' => undef,
-                'negotiatetimeout' => undef,
-                'checkinterval' => undef,
-                'server' => {},
-                'qosup' => 0,
-                'real' => ['real'],
-                'module' => { 'name' => 'sessionless', 'key' => '' },
-                'checktimeout' => undef,
-                'request' => undef,
-                'checktype' => 'negotiate',
-                'virtualhost' => undef,
-                'quiescent' => undef,
-                'realrecovercallback' => undef,
-                'sorryserver' => undef,
-                'service' => undef,
-                'login' => '',
-                'fallback' => undef,
-                'passwd' => '',
-                'receive' => undef,
-                'database' => '',
-                'maxconn' => 0,
-                'checkcount' => undef,
-                'checkport' => undef,
-                'scheduler' => 'rr',
-                'realdowncallback' => undef,
-                'customcheck' => undef,
-                'accesslog_rotate_rotation_timing' => undef,
-                'accesslog_rotate_max_filesize' => undef,
-            }
-        ]
-    );
-    default_value();
-    local $ld_gethostservbyname_return = {};
-    local @ld_gethostservbyname_args   = ();
-    local $_ld_service_resolve_called  = 0;
-    local @parse_fallback_args         = ();
-    local $parse_fallback_return       = 'fallback_return';
-    local @parse_real_args             = ();
-    local $parse_real_return           = ['real'];
-    local $ld_openlog_arg              = ();
-    local $ld_openlog_return           = 0;
-    create_config($input) or skip 'cannot create config', 7;
-    read_config();
-    is $main::PROC_STAT{initialized}, 1, 'read_config - full config';
-##    is_deeply \%main::CONFIG, \%config, 'read_config - set all value';
-    is $_ld_service_resolve_called, 4, 'read_config - _ld_service_resolve called';
-    is_deeply \@ld_gethostservbyname_args,
-              ['virtual_value1',    'tcp', 'virtual_value2', 'tcp', 'virtual_value3', 'tcp',
-               'sorryserver_value', 'tcp', 'virtual_value4', 'tcp'],
-              'read_config - _ld_gethostservbyname called';
-    is_deeply \@parse_fallback_args,
-                [14, 'fallback_value', 'fallback=fallback_value',
-                 46, 'fallback_value', '    fallback = fallback_value'],
-                'read_config - parse_fallback called';
-    is_deeply \@parse_real_args,
-                [23, 'real_value1', '    real = real_value1',
-                 24, 'real_value2', '        real = real_value2',
-                 62, 'real_value3', '        real = real_value3'],
-                'read_config - parse_real called';
-    is $ld_openlog_arg, 'logfile_value', 'read_config - ld_openlog called';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-checktimeout=1
-CONFIG
-    my %config = %main::GLOBAL;
-    $config{checktimeout} = 1;
-    default_value();
-    create_config($input) or skip 'cannot create config', 2;
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - checktimeout result ok';
-    is_deeply \%main::CONFIG, \%config, 'read_config - checktimeout set config ok';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-checktimeout
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 4;
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - checktimeout not defined';
-    is $@, "config_error\n", 'read_config - raise config_error(4)';
-    is_deeply \@config_error_args, [1, 'ERR0101', 'checktimeout'], 'read_config - config_error args(4)';
-    is_deeply \%main::CONFIG, \%main::GLOBAL, 'read_config - not set anything(4)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-checktimeout=yes
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 4;
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - checktimeout not numeric';
-    is $@, "config_error\n", 'read_config - raise config_error(5)';
-    is_deeply \@config_error_args, [1, 'ERR0101', 'checktimeout=yes'], 'read_config - config_error args(5)';
-    is_deeply \%main::CONFIG, \%main::GLOBAL, 'read_config - not set anything(5)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-checktimeout=0
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 4;
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - checktimeout zero';
-    is $@, "config_error\n", 'read_config - raise config_error(6)';
-    is_deeply \@config_error_args, [1, 'ERR0101', 'checktimeout=0'], 'read_config - config_error args(6)';
-    is_deeply \%main::CONFIG, \%main::GLOBAL, 'read_config - not set anything(6)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-negotiatetimeout=1
-CONFIG
-    my %config = %main::GLOBAL;
-    $config{negotiatetimeout} = 1;
-    default_value();
-    create_config($input) or skip 'cannot create config', 2;
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - negotiatetimeout result ok';
-    is_deeply \%main::CONFIG, \%config, 'read_config - negotiatetimeout set config ok';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-negotiatetimeout
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 4;
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - negotiatetimeout not defined';
-    is $@, "config_error\n", 'read_config - raise config_error(7)';
-    is_deeply \@config_error_args, [1, 'ERR0101', 'negotiatetimeout'], 'read_config - config_error args(7)';
-    is_deeply \%main::CONFIG, \%main::GLOBAL, 'read_config - not set anything(7)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-negotiatetimeout=yes
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 4;
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - negotiatetimeout not numeric';
-    is $@, "config_error\n", 'read_config - raise config_error(8)';
-    is_deeply \@config_error_args, [1, 'ERR0101', 'negotiatetimeout=yes'], 'read_config - config_error args(8)';
-    is_deeply \%main::CONFIG, \%main::GLOBAL, 'read_config - not set anything(8)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-negotiatetimeout=0
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 4;
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - negotiatetimeout zero';
-    is $@, "config_error\n", 'read_config - raise config_error(9)';
-    is_deeply \@config_error_args, [1, 'ERR0101', 'negotiatetimeout=0'], 'read_config - config_error args(9)';
-    is_deeply \%main::CONFIG, \%main::GLOBAL, 'read_config - not set anything(9)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-checkinterval=1
-CONFIG
-    my %config = %main::GLOBAL;
-    $config{checkinterval} = 1;
-    default_value();
-    create_config($input) or skip 'cannot create config', 2;
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - checkinterval result ok';
-    is_deeply \%main::CONFIG, \%config, 'read_config - checkinterval set config ok';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-checkinterval
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 4;
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - checkinterval not defined';
-    is $@, "config_error\n", 'read_config - raise config_error(10)';
-    is_deeply \@config_error_args, [1, 'ERR0101', 'checkinterval'], 'read_config - config_error args(10)';
-    is_deeply \%main::CONFIG, \%main::GLOBAL, 'read_config - not set anything(10)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-checkinterval=yes
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 4;
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - checkinterval not numeric';
-    is $@, "config_error\n", 'read_config - raise config_error(11)';
-    is_deeply \@config_error_args, [1, 'ERR0101', 'checkinterval=yes'], 'read_config - config_error args(11)';
-    is_deeply \%main::CONFIG, \%main::GLOBAL, 'read_config - not set anything(11)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-checkinterval=0
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 4;
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - checkinterval zero';
-    is $@, "config_error\n", 'read_config - raise config_error(12)';
-    is_deeply \@config_error_args, [1, 'ERR0101', 'checkinterval=0'], 'read_config - config_error args(12)';
-    is_deeply \%main::CONFIG, \%main::GLOBAL, 'read_config - not set anything(12)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-retryinterval=1
-CONFIG
-    my %config = %main::GLOBAL;
-    $config{retryinterval} = 1;
-    default_value();
-    create_config($input) or skip 'cannot create config', 2;
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - retryinterval result ok';
-    is_deeply \%main::CONFIG, \%config, 'read_config - retryinterval set config ok';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-retryinterval
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 4;
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - retryinterval not defined';
-    is $@, "config_error\n", 'read_config - raise config_error(13)';
-    is_deeply \@config_error_args, [1, 'ERR0101', 'retryinterval'], 'read_config - config_error args(13)';
-    is_deeply \%main::CONFIG, \%main::GLOBAL, 'read_config - not set anything(13)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-retryinterval=yes
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 4;
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - retryinterval not numeric';
-    is $@, "config_error\n", 'read_config - raise config_error(14)';
-    is_deeply \@config_error_args, [1, 'ERR0101', 'retryinterval=yes'], 'read_config - config_error args(14)';
-    is_deeply \%main::CONFIG, \%main::GLOBAL, 'read_config - not set anything(14)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-retryinterval=0
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 4;
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - retryinterval zero';
-    is $@, "config_error\n", 'read_config - raise config_error(15)';
-    is_deeply \@config_error_args, [1, 'ERR0101', 'retryinterval=0'], 'read_config - config_error args(15)';
-    is_deeply \%main::CONFIG, \%main::GLOBAL, 'read_config - not set anything(15)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-configinterval=1
-CONFIG
-    my %config = %main::GLOBAL;
-    $config{configinterval} = 1;
-    default_value();
-    create_config($input) or skip 'cannot create config', 2;
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - configinterval result ok';
-    is_deeply \%main::CONFIG, \%config, 'read_config - configinterval set config ok';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-configinterval
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 4;
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - configinterval not defined';
-    is $@, "config_error\n", 'read_config - raise config_error(16)';
-    is_deeply \@config_error_args, [1, 'ERR0101', 'configinterval'], 'read_config - config_error args(16)';
-    is_deeply \%main::CONFIG, \%main::GLOBAL, 'read_config - not set anything(16)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-configinterval=yes
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 4;
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - configinterval not numeric';
-    is $@, "config_error\n", 'read_config - raise config_error(17)';
-    is_deeply \@config_error_args, [1, 'ERR0101', 'configinterval=yes'], 'read_config - config_error args(17)';
-    is_deeply \%main::CONFIG, \%main::GLOBAL, 'read_config - not set anything(17)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-configinterval=0
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 4;
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - configinterval zero';
-    is $@, "config_error\n", 'read_config - raise config_error(18)';
-    is_deeply \@config_error_args, [1, 'ERR0101', 'configinterval=0'], 'read_config - config_error args(18)';
-    is_deeply \%main::CONFIG, \%main::GLOBAL, 'read_config - not set anything(18)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-checkcount=1
-CONFIG
-    my %config = %main::GLOBAL;
-    $config{checkcount} = 1;
-    default_value();
-    create_config($input) or skip 'cannot create config', 2;
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - checkcount result ok';
-    is_deeply \%main::CONFIG, \%config, 'read_config - checkcount set config ok';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-checkcount
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 4;
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - checkcount not defined';
-    is $@, "config_error\n", 'read_config - raise config_error(19)';
-    is_deeply \@config_error_args, [1, 'ERR0101', 'checkcount'], 'read_config - config_error args(19)';
-    is_deeply \%main::CONFIG, \%main::GLOBAL, 'read_config - not set anything(19)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-checkcount=yes
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 4;
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - checkcount not numeric';
-    is $@, "config_error\n", 'read_config - raise config_error(20)';
-    is_deeply \@config_error_args, [1, 'ERR0101', 'checkcount=yes'], 'read_config - config_error args(20)';
-    is_deeply \%main::CONFIG, \%main::GLOBAL, 'read_config - not set anything(20)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-checkcount=0
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 4;
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - checkcount zero';
-    is $@, "config_error\n", 'read_config - raise config_error(21)';
-    is_deeply \@config_error_args, [1, 'ERR0101', 'checkcount=0'], 'read_config - config_error args(21)';
-    is_deeply \%main::CONFIG, \%main::GLOBAL, 'read_config - not set anything(21)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-autoreload=YeS
-CONFIG
-    my %config = %main::GLOBAL;
-    $config{autoreload} = 1;
-    default_value();
-    create_config($input) or skip 'cannot create config', 2;
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - autoreload yes result ok';
-    is_deeply \%main::CONFIG, \%config, 'read_config - autoreload yes set config ok';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-autoreload=nO
-CONFIG
-    my %config = %main::GLOBAL;
-    $config{autoreload} = 0;
-    default_value();
-    create_config($input) or skip 'cannot create config', 2;
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - autoreload no result ok';
-    is_deeply \%main::CONFIG, \%config, 'read_config - autoreload no set config ok';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-autoreload
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 4;
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - autoreload not defined';
-    is $@, "config_error\n", 'read_config - raise config_error(22)';
-    is_deeply \@config_error_args, [1, 'ERR0102', 'autoreload'], 'read_config - config_error args(22)';
-    is_deeply \%main::CONFIG, \%main::GLOBAL, 'read_config - not set anything(22)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-autoreload=YEAH
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 4;
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - autoreload not lower yes or no(1)';
-    is $@, "config_error\n", 'read_config - raise config_error(23)';
-    is_deeply \@config_error_args, [1, 'ERR0102', 'autoreload=YEAH'], 'read_config - config_error args(23)';
-    is_deeply \%main::CONFIG, \%main::GLOBAL, 'read_config - not set anything(23)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-autoreload=0
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 4;
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - autoreload not lower yes or no(2)';
-    is $@, "config_error\n", 'read_config - raise config_error(24)';
-    is_deeply \@config_error_args, [1, 'ERR0102', 'autoreload=0'], 'read_config - config_error args(24)';
-    is_deeply \%main::CONFIG, \%main::GLOBAL, 'read_config - not set anything(24)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-quiescent=yEs
-CONFIG
-    my %config = %main::GLOBAL;
-    $config{quiescent} = 1;
-    default_value();
-    create_config($input) or skip 'cannot create config', 2;
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - quiescent yes result ok';
-    is_deeply \%main::CONFIG, \%config, 'read_config - quiescent yes set config ok';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-quiescent=No
-CONFIG
-    my %config = %main::GLOBAL;
-    $config{quiescent} = 0;
-    default_value();
-    create_config($input) or skip 'cannot create config', 2;
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - quiescent no result ok';
-    is_deeply \%main::CONFIG, \%config, 'read_config - quiescent no set config ok';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-quiescent
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 4;
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - quiescent not defined';
-    is $@, "config_error\n", 'read_config - raise config_error(25)';
-    is_deeply \@config_error_args, [1, 'ERR0102', 'quiescent'], 'read_config - config_error args(25)';
-    is_deeply \%main::CONFIG, \%main::GLOBAL, 'read_config - not set anything(25)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-quiescent=NOPE
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 4;
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - quiescent not lower yes or no(1)';
-    is $@, "config_error\n", 'read_config - raise config_error(26)';
-    is_deeply \@config_error_args, [1, 'ERR0102', 'quiescent=NOPE'], 'read_config - config_error args(26)';
-    is_deeply \%main::CONFIG, \%main::GLOBAL, 'read_config - not set anything(26)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-quiescent=0
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 4;
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - quiescent not lower yes or no(2)';
-    is $@, "config_error\n", 'read_config - raise config_error(27)';
-    is_deeply \@config_error_args, [1, 'ERR0102', 'quiescent=0'], 'read_config - config_error args(27)';
-    is_deeply \%main::CONFIG, \%main::GLOBAL, 'read_config - not set anything(27)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-fallback
-CONFIG
-    my %config = %main::GLOBAL;
-    $config{fallback} = { tcp => undef };
-    default_value();
-    create_config($input) or skip 'cannot create config', 3;
-    local @parse_fallback_args = ();
-    local $parse_fallback_return = undef;
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - fallback not defined';
-    is_deeply \%main::CONFIG, \%config, 'read_config - fallback set undef..';
-    is_deeply \@parse_fallback_args, [1, undef, 'fallback'], 'read_config - parse_fallback_args(1)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-fallback=localhost:http
-CONFIG
-    my %config = %main::GLOBAL;
-    $config{fallback} = { tcp => 'fallback' };
-    default_value();
-    create_config($input) or skip 'cannot create config', 3;
-    local @parse_fallback_args = ();
-    local $parse_fallback_return = 'fallback';
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - fallback ok';
-    is_deeply \%main::CONFIG, \%config, 'read_config - fallback set normal';
-    is_deeply \@parse_fallback_args, [1, 'localhost:http', 'fallback=localhost:http'], 'read_config - parse_fallback_args(2)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-callback=/bin/sh
-CONFIG
-    my %config = %main::GLOBAL;
-    $config{callback} = '/bin/sh';
-    default_value();
-    create_config($input) or skip 'cannot create config', 2;
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - callback result ok';
-    is_deeply \%main::CONFIG, \%config, 'read_config - callback set config ok';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-callback
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 4;
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - callback not defined';
-    is $@, "config_error\n", 'read_config - raise config_error(28)';
-    is_deeply \@config_error_args, [1, 'ERR0117', 'callback'], 'read_config - config_error args(28)';
-    is_deeply \%main::CONFIG, \%main::GLOBAL, 'read_config - not set anything(28)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-callback=/proc/1
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 4;
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - callback cannot execute';
-    is $@, "config_error\n", 'read_config - raise config_error(29)';
-    is_deeply \@config_error_args, [1, 'ERR0117', 'callback=/proc/1'], 'read_config - config_error args(29)';
-    is_deeply \%main::CONFIG, \%main::GLOBAL, 'read_config - not set anything(29)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-callback=/proc/100000
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 4;
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - callback no such file';
-    is $@, "config_error\n", 'read_config - raise config_error(30)';
-    is_deeply \@config_error_args, [1, 'ERR0117', 'callback=/proc/100000'], 'read_config - config_error args(30)';
-    is_deeply \%main::CONFIG, \%main::GLOBAL, 'read_config - not set anything(30)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-callback=/proc
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 4;
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - callback directory';
-    is $@, "config_error\n", 'read_config - raise config_error(31)';
-    is_deeply \@config_error_args, [1, 'ERR0117', 'callback=/proc'], 'read_config - config_error args(31)';
-    is_deeply \%main::CONFIG, \%main::GLOBAL, 'read_config - not set anything(31)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-execute=/bin/sh
-execute=/bin/bash
-CONFIG
-    my %config = %main::GLOBAL;
-    $config{execute} = { '/bin/sh' => 1, '/bin/bash' => 1 };
-    default_value();
-    create_config($input) or skip 'cannot create config', 2;
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - execute result ok';
-    is_deeply \%main::CONFIG, \%config, 'read_config - execute set config ok';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-execute
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 4;
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - execute not defined';
-    is $@, "config_error\n", 'read_config - raise config_error(32)';
-    is_deeply \@config_error_args, [1, 'ERR0116', 'execute'], 'read_config - config_error args(32)';
-    is_deeply \%main::CONFIG, \%main::GLOBAL, 'read_config - not set anything(32)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-execute=/proc/100000
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 4;
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - execute no such file';
-    is $@, "config_error\n", 'read_config - raise config_error(33)';
-    is_deeply \@config_error_args, [1, 'ERR0116', 'execute=/proc/100000'], 'read_config - config_error args(33)';
-    is_deeply \%main::CONFIG, \%main::GLOBAL, 'read_config - not set anything(33)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-execute=/proc
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 4;
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - execute directory';
-    is $@, "config_error\n", 'read_config - raise config_error(34)';
-    is_deeply \@config_error_args, [1, 'ERR0116', 'execute=/proc'], 'read_config - config_error args(34)';
-    is_deeply \%main::CONFIG, \%main::GLOBAL, 'read_config - not set anything(34)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-logfile=/bin/sh
-CONFIG
-    my %config = %main::GLOBAL;
-    $config{logfile} = '/bin/sh';
-    default_value();
-    create_config($input) or skip 'cannot create config', 2;
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - logfile result ok';
-    is_deeply \%main::CONFIG, \%config, 'read_config - logfile set config ok';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-logfile=sys
-CONFIG
-    my %config = %main::GLOBAL;
-    $config{logfile} = 'sys';
-    default_value();
-    create_config($input) or skip 'cannot create config', 2;
-    local $ld_openlog_arg = undef;
-    local $ld_openlog_return = 0;
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - logfile ld_openlog ok';
-    is_deeply \%main::CONFIG, \%config, 'read_config - logfile ld_openlog ok';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-logfile
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 4;
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - logfile not defined';
-    is $@, "config_error\n", 'read_config - raise config_error(35)';
-    is_deeply \@config_error_args, [1, 'ERR0118', 'logfile'], 'read_config - config_error args(35)';
-    is_deeply \%main::CONFIG, \%main::GLOBAL, 'read_config - not set anything(35)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-logfile=sys
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 5;
-    local $ld_openlog_arg = undef;
-    local $ld_openlog_return = 1;
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - logfile ld_openlog fail';
-    is $@, "config_error\n", 'read_config - raise config_error(36)';
-    is_deeply \@config_error_args, [1, 'ERR0118', 'logfile=sys'], 'read_config - config_error args(36)';
-    is_deeply \%main::CONFIG, \%main::GLOBAL, 'read_config - not set anything(36)';
-    is $ld_openlog_arg, 'sys', 'read_config - ld_openlog arg';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-supervised
-CONFIG
-    my %config = %main::GLOBAL;
-    $config{supervised} = 1;
-    default_value();
-    create_config($input) or skip 'cannot create config', 2;
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - supervised result ok(1)';
-    is_deeply \%main::CONFIG, \%config, 'read_config - supervised set config ok(1)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-supervised = yes
-CONFIG
-    my %config = %main::GLOBAL;
-    $config{supervised} = 1;
-    default_value();
-    create_config($input) or skip 'cannot create config', 2;
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - supervised result ok(2)';
-    is_deeply \%main::CONFIG, \%config, 'read_config - supervised set config ok(2)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-supervised = no
-CONFIG
-    my %config = %main::GLOBAL;
-    $config{supervised} = 1;
-    default_value();
-    create_config($input) or skip 'cannot create config', 2;
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - supervised result ok(3)';
-    is_deeply \%main::CONFIG, \%config, 'read_config - supervised set config ok(3)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-unknown
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 4;
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - unknown config';
-    is $@, "config_error\n", 'read_config - raise config_error(37)';
-    is_deeply \@config_error_args, [1, 'ERR0120', 'unknown'], 'read_config - config_error args(37)';
-    is_deeply \%main::CONFIG, \%main::GLOBAL, 'read_config - not set anything(37)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 5;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = undef;
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - virtual not defined';
-    is $@, "config_error\n", 'read_config - raise config_error(38)';
-    is_deeply \@config_error_args, [1, 'ERR0114', 'virtual'], 'read_config - config_error args(38)';
-    is_deeply \%main::CONFIG, \%main::GLOBAL, 'read_config - not set anything(38)';
-    is_deeply \@ld_gethostservbyname_args, [undef, 'tcp'], 'read_config - ld_gethostservbyname args(1)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 4;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - virtual normal ok';
-    is $main::CONFIG{virtual}[0]{server}{ip}, '127.0.0.1', 'read_config - set virtual ip ok';
-    is $main::CONFIG{virtual}[0]{server}{port}, 80, 'read_config - set virtual port ok';
-    is_deeply \@ld_gethostservbyname_args, ['localhost:http', 'tcp'], 'read_config - ld_gethostservbyname args(2)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-    real=localhost:http
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 4;
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - no virtual line';
-    is $@, "config_error\n", 'read_config - virtual section - raise config_error(1)';
-    is_deeply \@config_error_args, [1, 'ERR0119', '    real=localhost:http'], 'read_config - virtual section - config_error args(1)';
-    is_deeply \%main::CONFIG, \%main::GLOBAL, 'read_config - virtual section - not set anything(1)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    unknown
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 3;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - unknown config';
-    is $@, "config_error\n", 'read_config - virtual section - raise config_error(2)';
-    is_deeply \@config_error_args, [2, 'ERR0120', '    unknown'], 'read_config - virtual section - config_error args(2)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    real="realhost1:ftp"
-    real="realhost2:ftp"
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 6;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    local @parse_real_args = ();
-    local $parse_real_return = [ {server => { ip => '127.0.0.2', port => 21 } } ];
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - real ok';
-    is $main::CONFIG{virtual}[0]{real}[0]{server}{ip}, '127.0.0.2', 'read_config - virtual section - set real ip ok(1)';
-    is $main::CONFIG{virtual}[0]{real}[0]{server}{port}, 21, 'read_config - virtual section - set real port ok(1)';
-    is $main::CONFIG{virtual}[0]{real}[1]{server}{ip}, '127.0.0.2', 'read_config - virtual section - set real ip ok(2)';
-    is $main::CONFIG{virtual}[0]{real}[1]{server}{port}, 21, 'read_config - virtual section - set real port ok(2)';
-    is_deeply \@parse_real_args, [2, 'realhost1:ftp', '    real="realhost1:ftp"',
-                                  3, 'realhost2:ftp', '    real="realhost2:ftp"'], 'read_config - virtual section - parse_real args';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    real
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 3;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    local @parse_real_args = ();
-    local $parse_real_return = undef;
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - real not defined';
-    is_deeply \@parse_real_args, [2, undef, '    real'], 'read_config - virtual section - parse_real args(3)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    request="/index.html"
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 2;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - request ok';
-    is $main::CONFIG{virtual}[0]{request}, '/index.html', 'read_config - virtual section - set request ok';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    request =
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 3;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - request not defined';
-    is $@, "config_error\n", 'read_config - virtual section - raise config_error(4)';
-    is_deeply \@config_error_args, [2, 'ERR0103', '    request ='], 'read_config - virtual section - config_error args(4)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    request = ""
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 3;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - empty request';
-    is $@, "config_error\n", 'read_config - virtual section - raise config_error(5)';
-    is_deeply \@config_error_args, [2, 'ERR0103', '    request = ""'], 'read_config - virtual section - config_error args(5)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    receive='body'
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 2;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - receive ok';
-    is $main::CONFIG{virtual}[0]{receive}, 'body', 'read_config - virtual section - set receive ok';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    receive =
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 3;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - receive not defined';
-    is $@, "config_error\n", 'read_config - virtual section - raise config_error(4)';
-    is_deeply \@config_error_args, [2, 'ERR0103', '    receive ='], 'read_config - virtual section - config_error args(4)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    receive = ""
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 3;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - empty receive';
-    is $@, "config_error\n", 'read_config - virtual section - raise config_error(5)';
-    is_deeply \@config_error_args, [2, 'ERR0103', '    receive = ""'], 'read_config - virtual section - config_error args(5)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    login= anonymous
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 2;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - login ok';
-    is $main::CONFIG{virtual}[0]{login}, 'anonymous', 'read_config - virtual section - set login ok';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    login =
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 3;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - login not defined';
-    is $@, "config_error\n", 'read_config - virtual section - raise config_error(4)';
-    is_deeply \@config_error_args, [2, 'ERR0103', '    login ='], 'read_config - virtual section - config_error args(4)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    login = ""
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 3;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - empty login';
-    is $@, "config_error\n", 'read_config - virtual section - raise config_error(5)';
-    is_deeply \@config_error_args, [2, 'ERR0103', '    login = ""'], 'read_config - virtual section - config_error args(5)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    passwd = "ftp\@localhost"
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 2;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - passwd ok';
-    is $main::CONFIG{virtual}[0]{passwd}, 'ftp@localhost', 'read_config - virtual section - set passwd ok';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    passwd =
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 3;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - passwd not defined';
-    is $@, "config_error\n", 'read_config - virtual section - raise config_error(4)';
-    is_deeply \@config_error_args, [2, 'ERR0103', '    passwd ='], 'read_config - virtual section - config_error args(4)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    passwd = ""
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 3;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - empty passwd';
-    is $@, "config_error\n", 'read_config - virtual section - raise config_error(5)';
-    is_deeply \@config_error_args, [2, 'ERR0103', '    passwd = ""'], 'read_config - virtual section - config_error args(5)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    database = "template"
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 2;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - database ok';
-    is $main::CONFIG{virtual}[0]{database}, 'template', 'read_config - virtual section - set database ok';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    database =
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 3;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - database not defined';
-    is $@, "config_error\n", 'read_config - virtual section - raise config_error(4)';
-    is_deeply \@config_error_args, [2, 'ERR0103', '    database ='], 'read_config - virtual section - config_error args(4)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    database = ""
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 3;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - empty database';
-    is $@, "config_error\n", 'read_config - virtual section - raise config_error(5)';
-    is_deeply \@config_error_args, [2, 'ERR0103', '    database = ""'], 'read_config - virtual section - config_error args(5)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    virtualhost = "vip.domain.com"
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 2;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - virtualhost ok';
-    is $main::CONFIG{virtual}[0]{virtualhost}, 'vip.domain.com', 'read_config - virtual section - set virtualhost ok';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    virtualhost =
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 3;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - virtualhost not defined';
-    is $@, "config_error\n", 'read_config - virtual section - raise config_error(4)';
-    is_deeply \@config_error_args, [2, 'ERR0103', '    virtualhost ='], 'read_config - virtual section - config_error args(4)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    virtualhost = ""
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 3;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - empty virtualhost';
-    is $@, "config_error\n", 'read_config - virtual section - raise config_error(5)';
-    is_deeply \@config_error_args, [2, 'ERR0103', '    virtualhost = ""'], 'read_config - virtual section - config_error args(5)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    checktype = CoNnEcT
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 2;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - checktype connect ok';
-    is $main::CONFIG{virtual}[0]{checktype}, 'connect', 'read_config - virtual section - set checktype connect ok';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    checktype = nEgOtIaTe
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 2;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - checktype negotiate ok';
-    is $main::CONFIG{virtual}[0]{checktype}, 'negotiate', 'read_config - virtual section - set checktype negotiate ok';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    checktype = piNG
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 2;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - checktype ping ok';
-    is $main::CONFIG{virtual}[0]{checktype}, 'ping', 'read_config - virtual section - set checktype ping ok';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    checktype = Off
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 2;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - checktype off ok';
-    is $main::CONFIG{virtual}[0]{checktype}, 'off', 'read_config - virtual section - set checktype off ok';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    checktype = oN
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 2;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - checktype on ok';
-    is $main::CONFIG{virtual}[0]{checktype}, 'on', 'read_config - virtual section - set checktype on ok';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    checktype = 1
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 2;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - checktype combined ok';
-    is $main::CONFIG{virtual}[0]{checktype}, '1', 'read_config - virtual section - set checktype combined ok';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    checktype =
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 3;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - checktype not defined';
-    is $@, "config_error\n", 'read_config - virtual section - raise config_error(6)';
-    is_deeply \@config_error_args, [2, 'ERR0104', '    checktype ='], 'read_config - virtual section - config_error args(6)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    checktype = unknown
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 3;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - checktype not valid';
-    is $@, "config_error\n", 'read_config - virtual section - raise config_error(7)';
-    is_deeply \@config_error_args, [2, 'ERR0104', '    checktype = unknown'], 'read_config - virtual section - config_error args(7)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    checktype = 0
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 3;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - checktype is zero';
-    is $@, "config_error\n", 'read_config - virtual section - raise config_error(8)';
-    is_deeply \@config_error_args, [2, 'ERR0104', '    checktype = 0'], 'read_config - virtual section - config_error args(8)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    checktimeout = '1'
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 2;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - checktimeout ok';
-    is $main::CONFIG{virtual}[0]{checktimeout}, '1', 'read_config - virtual section - set checktimeout ok';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    checktimeout
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 3;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - checktimeout not defined';
-    is $@, "config_error\n", 'read_config - virtual section - raise config_error(9)';
-    is_deeply \@config_error_args, [2, 'ERR0101', '    checktimeout'], 'read_config - virtual section - config_error args(9)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    checktimeout = yes
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 3;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - checktimeout not numeric';
-    is $@, "config_error\n", 'read_config - virtual section - raise config_error(10)';
-    is_deeply \@config_error_args, [2, 'ERR0101', '    checktimeout = yes'], 'read_config - virtual section - config_error args(10)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    checktimeout = 0
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 3;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - checktimeout is zero';
-    is $@, "config_error\n", 'read_config - virtual section - raise config_error(11)';
-    is_deeply \@config_error_args, [2, 'ERR0101', '    checktimeout = 0'], 'read_config - virtual section - config_error args(11)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    negotiatetimeout = '1'
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 2;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - negotiatetimeout ok';
-    is $main::CONFIG{virtual}[0]{negotiatetimeout}, '1', 'read_config - virtual section - set negotiatetimeout ok';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    negotiatetimeout
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 3;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - negotiatetimeout not defined';
-    is $@, "config_error\n", 'read_config - virtual section - raise config_error(12)';
-    is_deeply \@config_error_args, [2, 'ERR0101', '    negotiatetimeout'], 'read_config - virtual section - config_error args(12)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    negotiatetimeout = yes
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 3;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - negotiatetimeout not numeric';
-    is $@, "config_error\n", 'read_config - virtual section - raise config_error(13)';
-    is_deeply \@config_error_args, [2, 'ERR0101', '    negotiatetimeout = yes'], 'read_config - virtual section - config_error args(13)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    negotiatetimeout = 0
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 3;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - negotiatetimeout is zero';
-    is $@, "config_error\n", 'read_config - virtual section - raise config_error(14)';
-    is_deeply \@config_error_args, [2, 'ERR0101', '    negotiatetimeout = 0'], 'read_config - virtual section - config_error args(14)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    checkinterval = '1'
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 2;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - checkinterval ok';
-    is $main::CONFIG{virtual}[0]{checkinterval}, '1', 'read_config - virtual section - set checkinterval ok';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    checkinterval
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 3;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - checkinterval not defined';
-    is $@, "config_error\n", 'read_config - virtual section - raise config_error(15)';
-    is_deeply \@config_error_args, [2, 'ERR0101', '    checkinterval'], 'read_config - virtual section - config_error args(15)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    checkinterval = yes
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 3;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - checkinterval not numeric';
-    is $@, "config_error\n", 'read_config - virtual section - raise config_error(16)';
-    is_deeply \@config_error_args, [2, 'ERR0101', '    checkinterval = yes'], 'read_config - virtual section - config_error args(16)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    checkinterval = 0
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 3;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - checkinterval is zero';
-    is $@, "config_error\n", 'read_config - virtual section - raise config_error(17)';
-    is_deeply \@config_error_args, [2, 'ERR0101', '    checkinterval = 0'], 'read_config - virtual section - config_error args(17)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    retryinterval = '1'
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 2;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - retryinterval ok';
-    is $main::CONFIG{virtual}[0]{retryinterval}, '1', 'read_config - virtual section - set retryinterval ok';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    retryinterval
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 3;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - retryinterval not defined';
-    is $@, "config_error\n", 'read_config - virtual section - raise config_error(18)';
-    is_deeply \@config_error_args, [2, 'ERR0101', '    retryinterval'], 'read_config - virtual section - config_error args(18)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    retryinterval = yes
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 3;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - retryinterval not numeric';
-    is $@, "config_error\n", 'read_config - virtual section - raise config_error(19)';
-    is_deeply \@config_error_args, [2, 'ERR0101', '    retryinterval = yes'], 'read_config - virtual section - config_error args(19)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    retryinterval = 0
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 3;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - retryinterval is zero';
-    is $@, "config_error\n", 'read_config - virtual section - raise config_error(20)';
-    is_deeply \@config_error_args, [2, 'ERR0101', '    retryinterval = 0'], 'read_config - virtual section - config_error args(20)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    checkcount = "1"
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 2;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - checkcount ok';
-    is $main::CONFIG{virtual}[0]{checkcount}, '1', 'read_config - virtual section - set checkcount ok';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    checkcount
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 3;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - checkcount not defined';
-    is $@, "config_error\n", 'read_config - virtual section - raise config_error(21)';
-    is_deeply \@config_error_args, [2, 'ERR0101', '    checkcount'], 'read_config - virtual section - config_error args(21)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    checkcount = yes
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 3;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - checkcount not numeric';
-    is $@, "config_error\n", 'read_config - virtual section - raise config_error(22)';
-    is_deeply \@config_error_args, [2, 'ERR0101', '    checkcount = yes'], 'read_config - virtual section - config_error args(22)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    checkcount = 0
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 3;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - checkcount is zero';
-    is $@, "config_error\n", 'read_config - virtual section - raise config_error(23)';
-    is_deeply \@config_error_args, [2, 'ERR0101', '    checkcount = 0'], 'read_config - virtual section - config_error args(23)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    maxconn = 0
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 2;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - maxconn ok';
-    is $main::CONFIG{virtual}[0]{maxconn}, '0', 'read_config - virtual section - set maxconn ok';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    maxconn
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 3;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - maxconn not defined';
-    is $@, "config_error\n", 'read_config - virtual section - raise config_error(24)';
-    is_deeply \@config_error_args, [2, 'ERR0101', '    maxconn'], 'read_config - virtual section - config_error args(24)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    maxconn = yes
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 3;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - maxconn not numeric';
-    is $@, "config_error\n", 'read_config - virtual section - raise config_error(25)';
-    is_deeply \@config_error_args, [2, 'ERR0101', '    maxconn = yes'], 'read_config - virtual section - config_error args(25)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    maxconn = -1
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 3;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - maxconn is minus';
-    is $@, "config_error\n", 'read_config - virtual section - raise config_error(26)';
-    is_deeply \@config_error_args, [2, 'ERR0101', '    maxconn = -1'], 'read_config - virtual section - config_error args(26)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    checkport = "1"
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 2;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - checkport min ok';
-    is $main::CONFIG{virtual}[0]{checkport}, '1', 'read_config - virtual section - set checkport min ok';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    checkport = 65535
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 2;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - checkport max ok';
-    is $main::CONFIG{virtual}[0]{checkport}, '65535', 'read_config - virtual section - set checkport max ok';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    checkport
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 3;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - checkport not defined';
-    is $@, "config_error\n", 'read_config - virtual section - raise config_error(27)';
-    is_deeply \@config_error_args, [2, 'ERR0108', '    checkport'], 'read_config - virtual section - config_error args(27)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    checkport = yes
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 3;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - checkport not numeric';
-    is $@, "config_error\n", 'read_config - virtual section - raise config_error(28)';
-    is_deeply \@config_error_args, [2, 'ERR0108', '    checkport = yes'], 'read_config - virtual section - config_error args(28)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    checkport = 0
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 3;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - checkport is zero';
-    is $@, "config_error\n", 'read_config - virtual section - raise config_error(29';
-    is_deeply \@config_error_args, [2, 'ERR0108', '    checkport = 0'], 'read_config - virtual section - config_error args(29)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    checkport = 65536
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 3;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - checkport is over range';
-    is $@, "config_error\n", 'read_config - virtual section - raise config_error(30)';
-    is_deeply \@config_error_args, [2, 'ERR0108', '    checkport = 65536'], 'read_config - virtual section - config_error args(30)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    scheduler = lC
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 2;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - scheduler lc ok';
-    is $main::CONFIG{virtual}[0]{scheduler}, 'lc', 'read_config - virtual section - set scheduler lc ok';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    scheduler = 'Rr'
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 2;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - scheduler rr ok';
-    is $main::CONFIG{virtual}[0]{scheduler}, 'rr', 'read_config - virtual section - set scheduler rr ok';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    scheduler = "WRR"
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 2;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - scheduler wrr ok';
-    is $main::CONFIG{virtual}[0]{scheduler}, 'wrr', 'read_config - virtual section - set scheduler wrr ok';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    scheduler =
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 3;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - scheduler not defined';
-    is $@, "config_error\n", 'read_config - virtual section - raise config_error(31)';
-    is_deeply \@config_error_args, [2, 'ERR0105', '    scheduler ='], 'read_config - virtual section - config_error args(31)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    scheduler = unknown
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 3;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - scheduler not valid';
-    is $@, "config_error\n", 'read_config - virtual section - raise config_error(32)';
-    is_deeply \@config_error_args, [2, 'ERR0105', '    scheduler = unknown'], 'read_config - virtual section - config_error args(32)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    protocol = 'TcP'
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 2;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - protocol ok';
-    is $main::CONFIG{virtual}[0]{protocol}, 'tcp', 'read_config - virtual section - set protocol ok';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    protocol =
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 3;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - protocol not defined';
-    is $@, "config_error\n", 'read_config - virtual section - raise config_error(33)';
-    is_deeply \@config_error_args, [2, 'ERR0109', '    protocol ='], 'read_config - virtual section - config_error args(33)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    protocol = unknown
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 3;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - protocol not valid';
-    is $@, "config_error\n", 'read_config - virtual section - raise config_error(34)';
-    is_deeply \@config_error_args, [2, 'ERR0109', '    protocol = unknown'], 'read_config - virtual section - config_error args(34)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    service=hTTp
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 2;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - service http ok';
-    is $main::CONFIG{virtual}[0]{service}, 'http', 'read_config - virtual section - set service http ok';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    service=hTTpS
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 2;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - service https ok';
-    is $main::CONFIG{virtual}[0]{service}, 'https', 'read_config - virtual section - set service https ok';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    service=LdAp
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 2;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - service ldap ok';
-    is $main::CONFIG{virtual}[0]{service}, 'ldap', 'read_config - virtual section - set service ldap ok';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    service= "FTP"
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 2;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - service ftp ok';
-    is $main::CONFIG{virtual}[0]{service}, 'ftp', 'read_config - virtual section - set service ftp ok';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    service=  'SmtP'
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 2;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - service smtp ok';
-    is $main::CONFIG{virtual}[0]{service}, 'smtp', 'read_config - virtual section - set service smtp ok';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    service =   POp
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 2;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - service pop ok';
-    is $main::CONFIG{virtual}[0]{service}, 'pop', 'read_config - virtual section - set service pop ok';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    service  = "ImAp"
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 2;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - service imap ok';
-    is $main::CONFIG{virtual}[0]{service}, 'imap', 'read_config - virtual section - set service imap ok';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    service  =  'NNtp'
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 2;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - service nntp ok';
-    is $main::CONFIG{virtual}[0]{service}, 'nntp', 'read_config - virtual section - set service nntp ok';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    service =DNS
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 2;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - service dns ok';
-    is $main::CONFIG{virtual}[0]{service}, 'dns', 'read_config - virtual section - set service dns ok';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    service= mysql
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 2;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - service mysql ok';
-    is $main::CONFIG{virtual}[0]{service}, 'mysql', 'read_config - virtual section - set service mysql ok';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    service=    'PGSQL'
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 2;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - service pgsql ok';
-    is $main::CONFIG{virtual}[0]{service}, 'pgsql', 'read_config - virtual section - set service pgsql ok';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    service= sip
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 2;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - service sip ok';
-    is $main::CONFIG{virtual}[0]{service}, 'sip', 'read_config - virtual section - set service sip ok';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    service=  NONE
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 2;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - service none ok';
-    is $main::CONFIG{virtual}[0]{service}, 'none', 'read_config - virtual section - set service none ok';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    service =
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 3;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - service not defined';
-    is $@, "config_error\n", 'read_config - virtual section - raise config_error(31)';
-    is_deeply \@config_error_args, [2, 'ERR0106', '    service ='], 'read_config - virtual section - config_error args(31)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    service = unknown
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 3;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - service not valid';
-    is $@, "config_error\n", 'read_config - virtual section - raise config_error(32)';
-    is_deeply \@config_error_args, [2, 'ERR0106', '    service = unknown'], 'read_config - virtual section - config_error args(32)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    httpmethod=get
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 2;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - httpmethod GET ok';
-    is $main::CONFIG{virtual}[0]{httpmethod}, 'GET', 'read_config - virtual section - set httpmethod GET ok';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    httpmethod= 'HeaD'
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 2;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - httpmethod HEAD ok';
-    is $main::CONFIG{virtual}[0]{httpmethod}, 'HEAD', 'read_config - virtual section - set httpmethod HEAD ok';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    httpmethod =
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 3;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - httpmethod not defined';
-    is $@, "config_error\n", 'read_config - virtual section - raise config_error(31)';
-    is_deeply \@config_error_args, [2, 'ERR0110', '    httpmethod ='], 'read_config - virtual section - config_error args(31)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    httpmethod = unknown
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 3;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - httpmethod not valid';
-    is $@, "config_error\n", 'read_config - virtual section - raise config_error(32)';
-    is_deeply \@config_error_args, [2, 'ERR0110', '    httpmethod = unknown'], 'read_config - virtual section - config_error args(32)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    fallback
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 2;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    local @parse_fallback_args = ();
-    local $parse_fallback_return = undef;
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - fallback not defined';
-    is_deeply \@parse_fallback_args, [2, undef, '    fallback'], 'read_config - virtual section - parse_fallback_args(1)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    fallback=localhost:http
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 2;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    local @parse_fallback_args = ();
-    local $parse_fallback_return = 'fallback';
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - fallback ok';
-    is_deeply \@parse_fallback_args, [2, 'localhost:http', '    fallback=localhost:http'], 'read_config - virtual section - parse_fallback_args(2)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    quiescent= YEs
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 2;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - quiescent yes ok';
-    is $main::CONFIG{virtual}[0]{quiescent}, '1', 'read_config - virtual section - set quiescent yes ok';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    quiescent= "NO"
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 2;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - quiescent no ok';
-    is $main::CONFIG{virtual}[0]{quiescent}, '0', 'read_config - virtual section - set quiescent no ok';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    quiescent
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 3;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - quiescent not defined';
-    is $@, "config_error\n", 'read_config - virtual section - raise config_error(33)';
-    is_deeply \@config_error_args, [2, 'ERR0102', '    quiescent'], 'read_config - virtual section - config_error args(33)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    quiescent=YEP
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 3;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - quiescent not lower yes or no(1)';
-    is $@, "config_error\n", 'read_config - virtual section - raise config_error(34)';
-    is_deeply \@config_error_args, [2, 'ERR0102', '    quiescent=YEP'], 'read_config - virtual section - config_error args(34)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    quiescent=0
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 3;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - quiescent not lower yes or no(2)';
-    is $@, "config_error\n", 'read_config - virtual section - raise config_error(35)';
-    is_deeply \@config_error_args, [2, 'ERR0102', '    quiescent=0'], 'read_config - virtual section - config_error args(35)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    module= URL  --reschedule --pattern-match  "foobar"
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 2;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - module url ok';
-    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';
-    remove_config();
-}
-######################################################
-## No Mentenance cinsert
-##SKIP: {
-##    my $input = <<"CONFIG";
-##virtual=localhost:http
-##    module= 'cINSERT --cookie-name 'Monkey' --cookie-expire 864'
-##CONFIG
-##    default_value();
-##    create_config($input) or skip 'cannot create config', 2;
-##    local @ld_gethostservbyname_args = ();
-##    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-##    eval {
-##        read_config();
-##    };
-##    is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - module cinsert ok';
-##    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';
-##    remove_config();
-##}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    module=  "sslID"
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 2;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - module sslid ok';
-    is_deeply $main::CONFIG{virtual}[0]{module}, { name => 'sslid', option => undef, key => '' }, 'read_config - virtual section - set module sslid ok';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    module=   SessionLess
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 2;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - module sessionless ok';
-    is_deeply $main::CONFIG{virtual}[0]{module}, { name => 'sessionless', option => undef, key => '' }, 'read_config - virtual section - set module sessionless ok';
-    remove_config();
-}
-######################################################
-## No Mentenance cinsert
-##SKIP: {
-##    my $input = <<"CONFIG";
-##virtual=localhost:http
-##    module=  'Cinsert --reschedule'
-##CONFIG
-##    default_value();
-##    create_config($input) or skip 'cannot create config', 2;
-##    local @ld_gethostservbyname_args = ();
-##    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-##    eval {
-##        read_config();
-##    };
-##    is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - module cinsert omit ok';
-##    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';
-##    remove_config();
-##}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    module
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 3;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - module not defined';
-    is $@, "config_error\n", 'read_config - virtual section - raise config_error(36)';
-    is_deeply \@config_error_args, [2, 'ERR0111', '    module'], 'read_config - virtual section - config_error args(36)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    module = unknown
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 3;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - unknown module';
-    is $@, "config_error\n", 'read_config - virtual section - raise config_error(37)';
-    is_deeply \@config_error_args, [2, 'ERR0111', '    module = unknown'], 'read_config - virtual section - config_error args(37)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    module = url
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 3;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - url module key not exist';
-    is $@, "config_error\n", 'read_config - virtual section - raise config_error(39)';
-    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)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    sorryserver  =  sorryhost:ssh
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 3;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - sorryserver ok';
-    is_deeply $main::CONFIG{virtual}[0]{sorryserver}, { ip => '127.0.0.1', port => 80 }, 'read_config - virtual section - set sorryserver ok';
-    is_deeply \@ld_gethostservbyname_args, ['localhost:http', 'tcp', 'sorryhost:ssh', 'tcp'], 'read_config - virtual section - ld_gethostservbyname args(3)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    sorryserver
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 4;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    local $ld_gethostservbyname_undef  = 2;
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - sorryserver not defined';
-    is $@, "config_error\n", 'read_config - virtual section - raise config_error(40)';
-    is_deeply \@config_error_args, [2, 'ERR0114', '    sorryserver'], 'read_config - virtual section - config_error args(40)';
-    is_deeply \@ld_gethostservbyname_args, ['localhost:http', 'tcp', undef, 'tcp'], 'read_config - virtual section - ld_gethostservbyname args(4)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    sorryserver = sorryhost:ftp
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 4;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    local $ld_gethostservbyname_undef  = 2;
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - sorryserver not defined';
-    is $@, "config_error\n", 'read_config - virtual section - raise config_error(41)';
-    is_deeply \@config_error_args, [2, 'ERR0114', '    sorryserver = sorryhost:ftp'], 'read_config - virtual section - config_error args(41)';
-    is_deeply \@ld_gethostservbyname_args, ['localhost:http', 'tcp', 'sorryhost:ftp', 'tcp'], 'read_config - virtual section - ld_gethostservbyname args(5)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    qosup = 0
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 2;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - qosup 0 ok';
-    is $main::CONFIG{virtual}[0]{qosup}, '0', 'read_config - virtual section - set qosup 0 ok';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    qosup = "1k"
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 2;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - qosup min kilo ok';
-    is $main::CONFIG{virtual}[0]{qosup}, '1K', 'read_config - virtual section - set qosup min kilo ok';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    qosup = '999K'
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 2;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - qosup max kilo ok';
-    is $main::CONFIG{virtual}[0]{qosup}, '999K', 'read_config - virtual section - set qosup max kilo ok';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    qosup = 1m
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 2;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - qosup min mega ok';
-    is $main::CONFIG{virtual}[0]{qosup}, '1M', 'read_config - virtual section - set qosup min mega ok';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    qosup = "999M"
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 2;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - qosup max mega ok';
-    is $main::CONFIG{virtual}[0]{qosup}, '999M', 'read_config - virtual section - set qosup max mega ok';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    qosup = '1G'
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 2;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - qosup min giga ok';
-    is $main::CONFIG{virtual}[0]{qosup}, '1G', 'read_config - virtual section - set qosup min giga ok';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    qosup = 999g
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 2;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - qosup max giga ok';
-    is $main::CONFIG{virtual}[0]{qosup}, '999G', 'read_config - virtual section - set qosup max giga ok';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    qosup
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 3;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - qosup not defined';
-    is $@, "config_error\n", 'read_config - virtual section - raise config_error(42)';
-    is_deeply \@config_error_args, [2, 'ERR0113', '    qosup'], 'read_config - virtual section - config_error args(42)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    qosup=100
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 3;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - qosup not valid format(1)';
-    is $@, "config_error\n", 'read_config - virtual section - raise config_error(43-1)';
-    is_deeply \@config_error_args, [2, 'ERR0113', '    qosup=100'], 'read_config - virtual section - config_error args(43-1)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    qosup=1000K
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 3;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - qosup not valid format(2)';
-    is $@, "config_error\n", 'read_config - virtual section - raise config_error(43-2)';
-    is_deeply \@config_error_args, [2, 'ERR0113', '    qosup=1000K'], 'read_config - virtual section - config_error args(43-2)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    qosdown = 0
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 2;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - qosdown 0 ok';
-    is $main::CONFIG{virtual}[0]{qosdown}, '0', 'read_config - virtual section - set qosdown 0 ok';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    qosdown = "1k"
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 2;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - qosdown min kilo ok';
-    is $main::CONFIG{virtual}[0]{qosdown}, '1K', 'read_config - virtual section - set qosdown min kilo ok';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    qosdown = '999K'
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 2;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - qosdown max kilo ok';
-    is $main::CONFIG{virtual}[0]{qosdown}, '999K', 'read_config - virtual section - set qosdown max kilo ok';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    qosdown = 1m
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 2;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - qosdown min mega ok';
-    is $main::CONFIG{virtual}[0]{qosdown}, '1M', 'read_config - virtual section - set qosdown min mega ok';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    qosdown = "999M"
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 2;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - qosdown max mega ok';
-    is $main::CONFIG{virtual}[0]{qosdown}, '999M', 'read_config - virtual section - set qosdown max mega ok';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    qosdown = '1G'
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 2;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - qosdown min giga ok';
-    is $main::CONFIG{virtual}[0]{qosdown}, '1G', 'read_config - virtual section - set qosdown min giga ok';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    qosdown = 999g
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 2;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - qosdown max giga ok';
-    is $main::CONFIG{virtual}[0]{qosdown}, '999G', 'read_config - virtual section - set qosdown max giga ok';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    qosdown
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 3;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - qosdown not defined';
-    is $@, "config_error\n", 'read_config - virtual section - raise config_error(44)';
-    is_deeply \@config_error_args, [2, 'ERR0113', '    qosdown'], 'read_config - virtual section - config_error args(44)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    qosdown=100
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 3;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - qosdown not valid format(1)';
-    is $@, "config_error\n", 'read_config - virtual section - raise config_error(45-1)';
-    is_deeply \@config_error_args, [2, 'ERR0113', '    qosdown=100'], 'read_config - virtual section - config_error args(45-1)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    qosdown= 1000M
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 3;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - qosdown not valid format(2)';
-    is $@, "config_error\n", 'read_config - virtual section - raise config_error(45-2)';
-    is_deeply \@config_error_args, [2, 'ERR0113', '    qosdown= 1000M'], 'read_config - virtual section - config_error args(45-2)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    realdowncallback =  '/bin/sh'
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 2;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - realdowncallback ok';
-    is $main::CONFIG{virtual}[0]{realdowncallback}, '/bin/sh', 'read_config - virtual section - set realdowncallback ok';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    realdowncallback
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 3;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - realdowncallback not defined';
-    is $@, "config_error\n", 'read_config - virtual section - raise config_error(46)';
-    is_deeply \@config_error_args, [2, 'ERR0117', '    realdowncallback'], 'read_config - virtual section - config_error args(46)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    realdowncallback=/proc/1
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 3;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - realdowncallback cannot execute';
-    is $@, "config_error\n", 'read_config - virtual section - raise config_error(47)';
-    is_deeply \@config_error_args, [2, 'ERR0117', '    realdowncallback=/proc/1'], 'read_config - virtual section - config_error args(47)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    realdowncallback=/proc/100000
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 3;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - realdowncallback no such file';
-    is $@, "config_error\n", 'read_config - virtual section - raise config_error(48)';
-    is_deeply \@config_error_args, [2, 'ERR0117', '    realdowncallback=/proc/100000'], 'read_config - virtual section - config_error args(48)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    realdowncallback=/proc
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 3;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - realdowncallback directory';
-    is $@, "config_error\n", 'read_config - virtual section - raise config_error(49)';
-    is_deeply \@config_error_args, [2, 'ERR0117', '    realdowncallback=/proc'], 'read_config - virtual section - config_error args(49)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    realrecovercallback =  '/bin/sh'
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 2;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - realrecovercallback ok';
-    is $main::CONFIG{virtual}[0]{realrecovercallback}, '/bin/sh', 'read_config - virtual section - set realrecovercallback ok';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    realrecovercallback
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 3;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - realrecovercallback not defined';
-    is $@, "config_error\n", 'read_config - virtual section - raise config_error(50)';
-    is_deeply \@config_error_args, [2, 'ERR0117', '    realrecovercallback'], 'read_config - virtual section - config_error args(50)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    realrecovercallback=/proc/1
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 3;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - realrecovercallback cannot execute';
-    is $@, "config_error\n", 'read_config - virtual section - raise config_error(51)';
-    is_deeply \@config_error_args, [2, 'ERR0117', '    realrecovercallback=/proc/1'], 'read_config - virtual section - config_error args(51)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    realrecovercallback=/proc/100000
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 3;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - realrecovercallback no such file';
-    is $@, "config_error\n", 'read_config - virtual section - raise config_error(52)';
-    is_deeply \@config_error_args, [2, 'ERR0117', '    realrecovercallback=/proc/100000'], 'read_config - virtual section - config_error args(52)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    realrecovercallback=/proc
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 3;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - realrecovercallback directory';
-    is $@, "config_error\n", 'read_config - virtual section - raise config_error(53)';
-    is_deeply \@config_error_args, [2, 'ERR0117', '    realrecovercallback=/proc'], 'read_config - virtual section - config_error args(53)';
-    remove_config();
-}
-
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    accesslog=yEs
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 2;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - accesslog yes ok';
-    is $main::CONFIG{virtual}[0]{accesslog}, '1', 'read_config - virtual section - set accesslog yes ok';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    accesslog=No
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 2;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - accesslog no ok';
-    is $main::CONFIG{virtual}[0]{accesslog}, '0', 'read_config - virtual section - set accesslog no ok';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    accesslog
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 2;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - accesslog not defined';
-    is $@, "config_error\n", 'read_config - virtual section - raise config_error';
-    is_deeply \@config_error_args, [2, 'ERR0102', '    accesslog'], 'read_config - virtual section - config_error args';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    accesslog=NOPE
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 2;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - accesslog not defined';
-    is $@, "config_error\n", 'read_config - virtual section - raise config_error';
-    is_deeply \@config_error_args, [2, 'ERR0102', '    accesslog=NOPE'], 'read_config - virtual section - config_error args';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    accesslog=0
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 2;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - accesslog not defined';
-    is $@, "config_error\n", 'read_config - virtual section - raise config_error';
-    is_deeply \@config_error_args, [2, 'ERR0102', '    accesslog=0'], 'read_config - virtual section - config_error args';
-    remove_config();
-}
-
-
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    accesslog= YEs
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 2;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - accesslog yes ok';
-    is $main::CONFIG{virtual}[0]{accesslog}, '1', 'read_config - virtual section - set accesslog yes ok';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    accesslog= "NO"
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 2;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - accesslog no ok';
-    is $main::CONFIG{virtual}[0]{accesslog}, '0', 'read_config - virtual section - set accesslog no ok';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    accesslog
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 3;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - accesslog not defined';
-    is $@, "config_error\n", 'read_config - virtual section - raise config_error(33)';
-    is_deeply \@config_error_args, [2, 'ERR0102', '    accesslog'], 'read_config - virtual section - config_error args(33)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    accesslog=YEP
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 3;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - accesslog not lower yes or no(1)';
-    is $@, "config_error\n", 'read_config - virtual section - raise config_error(34)';
-    is_deeply \@config_error_args, [2, 'ERR0102', '    accesslog=YEP'], 'read_config - virtual section - config_error args(34)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    accesslog=0
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 3;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - accesslog not lower yes or no(2)';
-    is $@, "config_error\n", 'read_config - virtual section - raise config_error(35)';
-    is_deeply \@config_error_args, [2, 'ERR0102', '    accesslog=0'], 'read_config - virtual section - config_error args(35)';
-    remove_config();
-}
-
-#########################################################################################################
-
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    sslconfigfile='/bin/sh'
-CONFIG
-    my %config = %main::GLOBAL;
-    $config{sslconfigfile} = '/bin/sh';
-    default_value();
-    create_config($input) or skip 'cannot create config', 3;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - sslconfigfile result ok';
-    is_deeply $main::CONFIG{virtual}[0]{sslconfigfile}, '/bin/sh', 'read_config - sslconfigfile set config ok';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    sslconfigfile
-CONFIG
-    my %config = %main::GLOBAL;
-    $config{sslconfigfile} = '/bin/sh';
-    default_value();
-    create_config($input) or skip 'cannot create config', 3;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - sslconfigfile result ok';
-    is_deeply \@config_error_args, [2, 'ERR0116', '    sslconfigfile'], 'read_config - virtual section - config_error args(35)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    sslconfigfile=/proc/100000
-CONFIG
-    my %config = %main::GLOBAL;
-    $config{sslconfigfile} = '/proc/100000';
-    default_value();
-    create_config($input) or skip 'cannot create config', 3;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - sslconfigfile result ok';
-    is_deeply \@config_error_args, [2, 'ERR0116', '    sslconfigfile=/proc/100000'], 'read_config - virtual section - config_error args(35)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    sslconfigfile=/proc
-CONFIG
-    my %config = %main::GLOBAL;
-    $config{sslconfigfile} = '/proc';
-    default_value();
-    create_config($input) or skip 'cannot create config', 3;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - sslconfigfile result ok';
-    is_deeply \@config_error_args, [2, 'ERR0116', '    sslconfigfile=/proc'], 'read_config - virtual section - config_error args';
-    remove_config();
-}
-
-#####################################################################################################
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    accesslogfile=/bin/sh
-CONFIG
-    my %config = %main::GLOBAL;
-    $config{accesslogfile} = '/bin/sh';
-    default_value();
-    create_config($input) or skip 'cannot create config', 3;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - sslconfigfile result ok';
-    is_deeply $main::CONFIG{virtual}[0]{accesslogfile}, '/bin/sh', 'read_config - sslconfigfile set config ok';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    accesslogfile
-CONFIG
-    my %config = %main::GLOBAL;
-    $config{accesslogfile} = '/bin/sh';
-    default_value();
-    create_config($input) or skip 'cannot create config', 3;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - accesslogfile result ok';
-    is_deeply \@config_error_args, [2, 'ERR0116', '    accesslogfile'], 'read_config - virtual section - config_error args(35)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    accesslogfile=/proc/100000
-CONFIG
-    my %config = %main::GLOBAL;
-    $config{accesslogfile} = '/proc/100000';
-    default_value();
-    create_config($input) or skip 'cannot create config', 3;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - accesslogfile result ok';
-    is_deeply \@config_error_args, [2, 'ERR0116', '    accesslogfile=/proc/100000'], 'read_config - virtual section - config_error args(35)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    accesslogfile=/proc
-CONFIG
-    my %config = %main::GLOBAL;
-    $config{accesslogfile} = '/proc';
-    default_value();
-    create_config($input) or skip 'cannot create config', 3;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - accesslogfile result ok';
-    is_deeply \@config_error_args, [2, 'ERR0116', '    accesslogfile=/proc'], 'read_config - virtual section - config_error args';
-    remove_config();
-}
-
-
-#################################################################################################
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    socketoption="deferaccept,nodelay,cork,quickackon"
-CONFIG
-    my %config = %main::GLOBAL;
-    $config{socketoption} = 'deferaccept,nodelay,cork,quickackon';
-    default_value();
-    create_config($input) or skip 'cannot create config', 2;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - socketoption ok';
-    is $main::CONFIG{virtual}[0]{socketoption}, 'deferaccept,nodelay,cork,quickackon', 'read_config - virtual section - set socketoption ok';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    socketoption="deferaccept,nodelay,quickackoff"
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 2;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - socketoption ok';
-    is $main::CONFIG{virtual}[0]{socketoption}, 'deferaccept,nodelay,quickackoff', 'read_config - virtual section - set socketoption ok';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    socketoption="deferaccept,quickackoff"
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 2;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - socketoption ok';
-    is $main::CONFIG{virtual}[0]{socketoption}, 'deferaccept,quickackoff', 'read_config - virtual section - set socketoption ok';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    socketoption="quickackoff"
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 2;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - socketoption ok';
-    is $main::CONFIG{virtual}[0]{socketoption}, 'quickackoff', 'read_config - virtual section - set socketoption ok';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    socketoption=""
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 2;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - socketoption ok';
-    is $main::CONFIG{virtual}[0]{socketoption}, '', 'read_config - virtual section - set socketoption ok';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    socketoption =sssss
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 3;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - socketoption not defined';
-    is $@, "config_error\n", 'read_config - virtual section - raise config_error(4)';
-    is_deeply \@config_error_args, [2, 'ERR0124', '    socketoption =sssss'], 'read_config - virtual section - config_error args(4)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    socketoption = deferaccept,nodelay,sdadda
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 3;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - empty socketoption';
-    is $@, "config_error\n", 'read_config - virtual section - raise config_error(5)';
-    is_deeply \@config_error_args, [2, 'ERR0124', '    socketoption = deferaccept,nodelay,sdadda'], 'read_config - virtual section - config_error args(5)';
-    remove_config();
-}
-#################################################################################################
-### date|size|datesize
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    accesslog_rotate_type=date
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 2;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - accesslog_rotate_type http ok';
-    is $main::CONFIG{virtual}[0]{accesslog_rotate_type}, 'date', 'read_config - virtual section - set accesslog_rotate_type http ok';
-    remove_config();
-}
-
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    accesslog_rotate_type=size
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 2;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - accesslog_rotate_type http ok';
-    is $main::CONFIG{virtual}[0]{accesslog_rotate_type}, 'size', 'read_config - virtual section - set accesslog_rotate_type http ok';
-    remove_config();
-}
-
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    accesslog_rotate_type=datesize
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 2;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - accesslog_rotate_type http ok';
-    is $main::CONFIG{virtual}[0]{accesslog_rotate_type}, 'datesize', 'read_config - virtual section - set accesslog_rotate_type http ok';
-    remove_config();
-}
-
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    accesslog_rotate_type =
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 3;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - accesslog_rotate_type not defined';
-    is $@, "config_error\n", 'read_config - virtual section - raise config_error(31)';
-    is_deeply \@config_error_args, [2, 'ERR0124', '    accesslog_rotate_type ='], 'read_config - virtual section - config_error args(31)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    accesslog_rotate_type = unknown
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 3;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - accesslog_rotate_type not valid';
-    is $@, "config_error\n", 'read_config - virtual section - raise config_error(32)';
-    is_deeply \@config_error_args, [2, 'ERR0124', '    accesslog_rotate_type = unknown'], 'read_config - virtual section - config_error args(32)';
-    remove_config();
-}
-#################################################################################################
-## accesslog_rotate_max_backup_index (N : )
-
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    accesslog_rotate_max_backup_index = "1"
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 2;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - accesslog_rotate_max_backup_index min ok';
-    is $main::CONFIG{virtual}[0]{accesslog_rotate_max_backup_index}, '1', 'read_config - virtual section - set accesslog_rotate_max_backup_index min ok';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    accesslog_rotate_max_backup_index = 12
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 2;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - accesslog_rotate_max_backup_index max ok';
-    is $main::CONFIG{virtual}[0]{accesslog_rotate_max_backup_index}, '12', 'read_config - virtual section - set accesslog_rotate_max_backup_index max ok';
-    remove_config();
-}
-
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    accesslog_rotate_max_backup_index
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 3;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - accesslog_rotate_max_backup_index not defined';
-    is $@, "config_error\n", 'read_config - virtual section - raise config_error(27)';
-    is_deeply \@config_error_args, [2, 'ERR0126', '    accesslog_rotate_max_backup_index'], 'read_config - virtual section - config_error args(27)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    accesslog_rotate_max_backup_index = yes
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 3;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - accesslog_rotate_max_backup_index not numeric';
-    is $@, "config_error\n", 'read_config - virtual section - raise config_error(28)';
-    is_deeply \@config_error_args, [2, 'ERR0126', '    accesslog_rotate_max_backup_index = yes'], 'read_config - virtual section - config_error args(28)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    accesslog_rotate_max_backup_index = 0
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 3;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - accesslog_rotate_max_backup_index not numeric';
-    is $@, "config_error\n", 'read_config - virtual section - raise config_error(28)';
-    is_deeply \@config_error_args, [2, 'ERR0126', '    accesslog_rotate_max_backup_index = 0'], 'read_config - virtual section - config_error args(28)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    accesslog_rotate_max_backup_index = 13
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 3;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - accesslog_rotate_max_backup_index is over range';
-    is $@, "config_error\n", 'read_config - virtual section - raise config_error(30)';
-    is_deeply \@config_error_args, [2, 'ERR0126', '    accesslog_rotate_max_backup_index = 13'], 'read_config - virtual section - config_error args(30)';
-    remove_config();
-}
-
-#################################################################################################
-## accesslog_rotate_max_filesize (N[K|M|G])
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    accesslog_rotate_max_filesize = 0
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 2;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - accesslog_rotate_max_filesize 0 ok';
-    is $main::CONFIG{virtual}[0]{accesslog_rotate_max_filesize}, '0', 'read_config - virtual section - set accesslog_rotate_max_filesize 0 ok';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    accesslog_rotate_max_filesize = "1k"
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 2;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - accesslog_rotate_max_filesize min kilo ok';
-    is $main::CONFIG{virtual}[0]{accesslog_rotate_max_filesize}, '1K', 'read_config - virtual section - set accesslog_rotate_max_filesize min kilo ok';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    accesslog_rotate_max_filesize = '999K'
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 2;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - accesslog_rotate_max_filesize max kilo ok';
-    is $main::CONFIG{virtual}[0]{accesslog_rotate_max_filesize}, '999K', 'read_config - virtual section - set accesslog_rotate_max_filesize max kilo ok';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    accesslog_rotate_max_filesize = 1m
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 2;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - accesslog_rotate_max_filesize min mega ok';
-    is $main::CONFIG{virtual}[0]{accesslog_rotate_max_filesize}, '1M', 'read_config - virtual section - set accesslog_rotate_max_filesize min mega ok';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    accesslog_rotate_max_filesize = "999M"
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 2;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - accesslog_rotate_max_filesize max mega ok';
-    is $main::CONFIG{virtual}[0]{accesslog_rotate_max_filesize}, '999M', 'read_config - virtual section - set accesslog_rotate_max_filesize max mega ok';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    accesslog_rotate_max_filesize = '1G'
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 2;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - accesslog_rotate_max_filesize min giga ok';
-    is $main::CONFIG{virtual}[0]{accesslog_rotate_max_filesize}, '1G', 'read_config - virtual section - set accesslog_rotate_max_filesize min giga ok';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    accesslog_rotate_max_filesize = 999g
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 2;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - accesslog_rotate_max_filesize max giga ok';
-    is $main::CONFIG{virtual}[0]{accesslog_rotate_max_filesize}, '999G', 'read_config - virtual section - set accesslog_rotate_max_filesize max giga ok';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    accesslog_rotate_max_filesize
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 3;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - accesslog_rotate_max_filesize not defined';
-    is $@, "config_error\n", 'read_config - virtual section - raise config_error(42)';
-    is_deeply \@config_error_args, [2, 'ERR0127', '    accesslog_rotate_max_filesize'], 'read_config - virtual section - config_error args(42)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    accesslog_rotate_max_filesize=1000K
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 3;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - accesslog_rotate_max_filesize not valid format(2)';
-    is $@, "config_error\n", 'read_config - virtual section - raise config_error(43-2)';
-    is_deeply \@config_error_args, [2, 'ERR0127', '    accesslog_rotate_max_filesize=1000K'], 'read_config - virtual section - config_error args(43-2)';
-    remove_config();
-}
-
-#################################################################################################
-### accesslog_rotate_rotation_timing  year|month|week|date|hour
-
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    accesslog_rotate_rotation_timing=year
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 2;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - accesslog_rotate_rotation_timing http ok';
-    is $main::CONFIG{virtual}[0]{accesslog_rotate_rotation_timing}, 'year', 'read_config - virtual section - set accesslog_rotate_rotation_timing http ok';
-    remove_config();
-}
-
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    accesslog_rotate_rotation_timing=month
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 2;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - accesslog_rotate_rotation_timing http ok';
-    is $main::CONFIG{virtual}[0]{accesslog_rotate_rotation_timing}, 'month', 'read_config - virtual section - set accesslog_rotate_rotation_timing http ok';
-    remove_config();
-}
-
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    accesslog_rotate_rotation_timing=week
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 2;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - accesslog_rotate_rotation_timing http ok';
-    is $main::CONFIG{virtual}[0]{accesslog_rotate_rotation_timing}, 'week', 'read_config - virtual section - set accesslog_rotate_rotation_timing http ok';
-    remove_config();
-}
-
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    accesslog_rotate_rotation_timing=date
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 2;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - accesslog_rotate_rotation_timing http ok';
-    is $main::CONFIG{virtual}[0]{accesslog_rotate_rotation_timing}, 'date', 'read_config - virtual section - set accesslog_rotate_rotation_timing http ok';
-    remove_config();
-}
-
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    accesslog_rotate_rotation_timing=hour
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 2;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - accesslog_rotate_rotation_timing http ok';
-    is $main::CONFIG{virtual}[0]{accesslog_rotate_rotation_timing}, 'hour', 'read_config - virtual section - set accesslog_rotate_rotation_timing http ok';
-    remove_config();
-}
-
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    accesslog_rotate_rotation_timing =
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 3;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - accesslog_rotate_rotation_timing not defined';
-    is $@, "config_error\n", 'read_config - virtual section - raise config_error(31)';
-    is_deeply \@config_error_args, [2, 'ERR0128', '    accesslog_rotate_rotation_timing ='], 'read_config - virtual section - config_error args(31)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    accesslog_rotate_rotation_timing = unknown
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 3;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - accesslog_rotate_rotation_timing not valid';
-    is $@, "config_error\n", 'read_config - virtual section - raise config_error(32)';
-    is_deeply \@config_error_args, [2, 'ERR0128', '    accesslog_rotate_rotation_timing = unknown'], 'read_config - virtual section - config_error args(32)';
-    remove_config();
-}
-#################################################################################################
-## accesslog_rotate_rotation_timing_value 
-##  MM/dd hh:mm Check
-##     dd hh:mm Check
-## <week> hh:mm Check
-##        hh:mm Check
-##           mm Check
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    accesslog_rotate_rotation_timing_value=12/31 23:59
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 2;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - accesslog_rotate_rotation_timing_value ok';
-    is $main::CONFIG{virtual}[0]{accesslog_rotate_rotation_timing_value}, '12/31 23:59', 'read_config - virtual section - set accesslog_rotate_rotation_timing_value ok';
-    remove_config();
-}
-
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    accesslog_rotate_rotation_timing_value=1 0:00
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 2;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - accesslog_rotate_rotation_timing_value ok';
-    is $main::CONFIG{virtual}[0]{accesslog_rotate_rotation_timing_value}, '1 0:00', 'read_config - virtual section - set accesslog_rotate_rotation_timing_value ok';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    accesslog_rotate_rotation_timing_value=Mon 22:23
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 2;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - accesslog_rotate_rotation_timing_value ok';
-    is $main::CONFIG{virtual}[0]{accesslog_rotate_rotation_timing_value}, 'Mon 22:23', 'read_config - virtual section - set accesslog_rotate_rotation_timing_value ok';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    accesslog_rotate_rotation_timing_value=20:59
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 2;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - accesslog_rotate_rotation_timing_value ok';
-    is $main::CONFIG{virtual}[0]{accesslog_rotate_rotation_timing_value}, '20:59', 'read_config - virtual section - set accesslog_rotate_rotation_timing_value ok';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    accesslog_rotate_rotation_timing_value=59
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 2;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - accesslog_rotate_rotation_timing_value ok';
-    is $main::CONFIG{virtual}[0]{accesslog_rotate_rotation_timing_value}, '59', 'read_config - virtual section - set accesslog_rotate_rotation_timing_value ok';
-    remove_config();
-}
-
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    accesslog_rotate_rotation_timing_value =sssss
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 3;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - accesslog_rotate_rotation_timing_value not defined';
-    is $@, "config_error\n", 'read_config - virtual section - raise config_error(4)';
-    is_deeply \@config_error_args, [2, 'ERR0129', '    accesslog_rotate_rotation_timing_value =sssss'], 'read_config - virtual section - config_error args(4)';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=localhost:http
-    accesslog_rotate_rotation_timing_value = deferaccept,nodelay,sdadda
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 3;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '127.0.0.1', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 0, 'read_config - virtual section - empty accesslog_rotate_rotation_timing_value';
-    is $@, "config_error\n", 'read_config - virtual section - raise config_error(5)';
-    is_deeply \@config_error_args, [2, 'ERR0129', '    accesslog_rotate_rotation_timing_value = deferaccept,nodelay,sdadda'], 'read_config - virtual section - config_error args(5)';
-    remove_config();
-}
-
-############################################################################################################################
-#   - reread_config
-{
-    local *read_config = \&__read_config;
-    local $main::CONFIG{virtual} = undef;
-    local $read_config_virtual   = [ foo => 2, bar => 4 ];
-    local $main::CONFIG{execute} = { 'foo.conf' => 1, 'bar.conf' => 1 };
-    local $read_config_execute   = { 'foo.conf' => 1, 'hoge.conf' => 1 };
-    local $system_wrapper_return = 1;
-    local $system_wrapper_called = 0;
-    local @ld_cmd_children_args  = ();
-    reread_config();
-    is $system_wrapper_called, 2, 'reread_config - virtual is undef';
-    is_deeply \@ld_cmd_children_args, [ ['stop', {'bar.conf' => 1} ], ['start', {'hoge.conf' => 1} ] ], 'reread_config - 1 old config stop, 1 new config start';
-}
-{
-    local *read_config = \&__read_config;
-    local $main::CONFIG{virtual} = [ foo => 1, bar => 2 ];
-    local $read_config_virtual   = [ foo => 2, bar => 4 ];
-    local $main::CONFIG{execute} = undef;
-    local $read_config_execute   = { 'foo.conf' => 1, 'hoge.conf' => 1 };
-    local $system_wrapper_return = 1;
-    local $system_wrapper_called = 0;
-    local @ld_cmd_children_args  = ();
-    reread_config();
-    is $system_wrapper_called, 0, 'reread_config - execute is undef';
-    is_deeply \@ld_cmd_children_args, [ ['stop', {} ], ['start', {'foo.conf' => 1, 'hoge.conf' => 1} ] ], 'reread_config - 0 old config stop, 2 new config start';
-}
-{
-    local *read_config = \&__read_config;
-    local $main::CONFIG{virtual} = [ foo => 1, bar => 2 ];
-    local $read_config_virtual   = [ foo => 2, bar => 4 ];
-    local $main::CONFIG{execute} = { 'foo.conf' => 1, 'bar.conf' => 1 };
-    local $read_config_execute   = { 'foo.conf' => 1, 'hoge.conf' => 1 };
-    local $system_wrapper_return = 1;
-    local $system_wrapper_called = 0;
-    local @ld_cmd_children_args  = ();
-    reread_config();
-    is $system_wrapper_called, 2, 'reread_config - 1 exist config reload, but failed and then start';
-    is_deeply \@ld_cmd_children_args, [ ['stop', {'bar.conf' => 1} ], ['start', {'hoge.conf' => 1} ] ], 'reread_config - 1 old config stop, 1 new config start';
-}
-{
-    local *read_config = \&__read_config;
-    local $main::CONFIG{virtual} = [ foo => 1, bar => 2 ];
-    local $read_config_virtual   = [ foo => 2, bar => 4 ];
-    local $main::CONFIG{execute} = { 'foo.conf' => 1, 'bar.conf' => 1 };
-    local $read_config_execute   = { 'foo.conf' => 1, 'hoge.conf' => 1 };
-    local $system_wrapper_return = 0;
-    local $system_wrapper_called = 0;
-    local $read_config_die = 1;
-    local @ld_cmd_children_args  = ();
-    reread_config();
-    is $system_wrapper_called, 2, 'reread_config - all old config reload(1)';
-    is_deeply \@ld_cmd_children_args, [ ['stop', {} ], ['start', {} ] ], 'reread_config - no stop / start command(1)';
-}
-{
-    local *read_config = \&__read_config;
-    local $main::CONFIG{virtual} = [ foo => 1, bar => 2 ];
-    local $read_config_virtual   = [ foo => 2, bar => 4 ];
-    local $main::CONFIG{execute} = { 'foo.conf' => 1, 'bar.conf' => 1 };
-    local $read_config_execute   = { 'foo.conf' => 1, 'hoge.conf' => 1 };
-    local $system_wrapper_return = 0;
-    local $system_wrapper_called = 0;
-    local $read_config_die = 0;
-    local $ld_setup_die = 1;
-    local @ld_cmd_children_args  = ();
-    reread_config();
-    is $system_wrapper_called, 2, 'reread_config - all old config reload(2)';
-    is_deeply \@ld_cmd_children_args, [ ['stop', {} ], ['start', {} ] ], 'reread_config - no stop / start command(2)';
-}
-#   - check_cfgfile
-{
-    local $main::CONFIG_FILE{path} = undef;
-    my $got = check_cfgfile();
-    is $got, 0, 'check_cfgfile - config file path is undef';
-}
-{
-    default_value();
-    create_config('sample');
-    my $got = check_cfgfile();
-    is $got, 0, 'check_cfgfile - first config file check(1)';
-    ok $main::CONFIG_FILE{stattime} > 0, 'check_cfgfile - register mtime(1)';
-    ok length $main::CONFIG_FILE{checksum} > 0, 'check_cfgfile - register checksum(1)';
-    remove_config();
-}
-{
-    default_value();
-    create_config('sample');
-    my $got = check_cfgfile();
-    is $got, 0, 'check_cfgfile - first config file check(2)';
-    ok $main::CONFIG_FILE{stattime} > 0, 'check_cfgfile - register mtime(2)';
-    ok length $main::CONFIG_FILE{checksum} > 0, 'check_cfgfile - register checksum(2)';
-    my $before_mtime = $main::CONFIG_FILE{stattime};
-    my $before_checksum = $main::CONFIG_FILE{checksum};
-    sleep 1;
-    open my $f, ">", $main::CONFIG_FILE{path};
-    print $f 'sample';
-    close $f;
-    $got = check_cfgfile();
-    is $got, 0, 'check_cfgfile - mtime change but same';
-    ok $main::CONFIG_FILE{stattime} > $before_mtime, 'check_cfgfile - mtime change';
-    is $main::CONFIG_FILE{checksum}, $before_checksum, 'check_cfgfile - same checksum';
-    remove_config();
-}
-{
-    default_value();
-    create_config('sample');
-    my $got = check_cfgfile();
-    is $got, 0, 'check_cfgfile - first config file check(3)';
-    ok $main::CONFIG_FILE{stattime} > 0, 'check_cfgfile - register mtime(3)';
-    ok length $main::CONFIG_FILE{checksum} > 0, 'check_cfgfile - register checksum(3)';
-    my $before_mtime = $main::CONFIG_FILE{stattime};
-    my $before_checksum = $main::CONFIG_FILE{checksum};
-    sleep 1;
-    open my $f, ">", $main::CONFIG_FILE{path};
-    print $f 'sample2';
-    close $f;
-    $got = check_cfgfile();
-    is $got, 0, 'check_cfgfile - config change, no autoreload, no callback';
-    ok $main::CONFIG_FILE{stattime} > $before_mtime, 'check_cfgfile - mtime change';
-    ok $main::CONFIG_FILE{checksum} ne $before_checksum, 'check_cfgfile - checksum change';
-    remove_config();
-}
-{
-    default_value();
-    create_config('sample');
-    $main::CONFIG{autoreload} = 1;
-    my $got = check_cfgfile();
-    is $got, 0, 'check_cfgfile - first config file check(4)';
-    ok $main::CONFIG_FILE{stattime} > 0, 'check_cfgfile - register mtime(4)';
-    ok length $main::CONFIG_FILE{checksum} > 0, 'check_cfgfile - register checksum(4)';
-    my $before_mtime = $main::CONFIG_FILE{stattime};
-    my $before_checksum = $main::CONFIG_FILE{checksum};
-    sleep 1;
-    open my $f, ">", $main::CONFIG_FILE{path};
-    print $f 'test';
-    close $f;
-    $got = check_cfgfile();
-    is $got, 1, 'check_cfgfile - config change, autoreload, no callback';
-    ok $main::CONFIG_FILE{stattime} > $before_mtime, 'check_cfgfile - mtime change';
-    ok $main::CONFIG_FILE{checksum} ne $before_checksum, 'check_cfgfile - checksum change';
-    remove_config();
-}
-{
-    default_value();
-    create_config('sample');
-    $main::CONFIG{autoreload} = 1;
-    $main::CONFIG{callback} = '/bin/sh';
-    my $got = check_cfgfile();
-    is $got, 0, 'check_cfgfile - first config file check(4)';
-    ok $main::CONFIG_FILE{stattime} > 0, 'check_cfgfile - register mtime(4)';
-    ok length $main::CONFIG_FILE{checksum} > 0, 'check_cfgfile - register checksum(4)';
-    my $before_mtime = $main::CONFIG_FILE{stattime};
-    my $before_checksum = $main::CONFIG_FILE{checksum};
-    sleep 1;
-    open my $f, ">", $main::CONFIG_FILE{path};
-    print $f 'callback';
-    close $f;
-    local $system_wrapper_called = 0;
-    $got = check_cfgfile();
-    is $got, 1, 'check_cfgfile - config change, autoreload, callback';
-    ok $main::CONFIG_FILE{stattime} > $before_mtime, 'check_cfgfile - mtime change';
-    ok $main::CONFIG_FILE{checksum} ne $before_checksum, 'check_cfgfile - checksum change';
-    is $system_wrapper_called, 1, 'check_cfgfile - callback called';
-    remove_config();
-}
-#########################################################################################################
-#### IPv6 Address Set
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=[::]:http
-    real="[2005::1]:ftp"
-    real="[2005::2]:ftp"
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 6;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '[2005::1]', port => 80 };
-    local @parse_real_args = ();
-    local $parse_real_return = [ {server => { ip => '[2005::2]', port => 21 } } ];
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - virtual section - real ok';
-    is $main::CONFIG{virtual}[0]{real}[0]{server}{ip}, '[2005::2]', 'read_config - virtual section - set real ip ok(1)';
-    is $main::CONFIG{virtual}[0]{real}[0]{server}{port}, 21, 'read_config - virtual section - set real port ok(1)';
-    is $main::CONFIG{virtual}[0]{real}[1]{server}{ip}, '[2005::2]', 'read_config - virtual section - set real ip ok(2)';
-    is $main::CONFIG{virtual}[0]{real}[1]{server}{port}, 21, 'read_config - virtual section - set real port ok(2)';
-    is_deeply \@parse_real_args, [2, '[2005::1]:ftp', '    real="[2005::1]:ftp"',
-                                  3, '[2005::2]:ftp', '    real="[2005::2]:ftp"'], 'read_config - virtual section - parse_real args';
-    remove_config();
-}
-SKIP: {
-    my $input = <<"CONFIG";
-virtual=[::]:http
-CONFIG
-    default_value();
-    create_config($input) or skip 'cannot create config', 4;
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = { ip => '[2005::1]', port => 80 };
-    eval {
-        read_config();
-    };
-    is $main::PROC_STAT{initialized}, 1, 'read_config - virtual normal ok';
-    is $main::CONFIG{virtual}[0]{server}{ip}, '[2005::1]', 'read_config - set virtual ip ok';
-    is $main::CONFIG{virtual}[0]{server}{port}, 80, 'read_config - set virtual port ok';
-    is_deeply \@ld_gethostservbyname_args, ['[::]:http', 'tcp'], 'read_config - virtualservice ipv6';
-    remove_config();
-}
-#####################
-###  check_require_module
-{
-    default_value();
-    eval {
-        check_require_module();
-    };
-    is_deeply \%main::CONFIG, \%main::GLOBAL, 'check_require_module - ok';
-}
-# test end
-#...............................................
-
-L7lib::comment_in();
-
-sub default_value {
-    $main::CONFIG_FILE{path} = time;
-    undef $main::CONFIG_FILE{stattime};
-    undef $main::CONFIG_FILE{checksum};
-    $main::PROC_STAT{initialized} = 0;
-    %main::CONFIG = %main::GLOBAL;
-}
-sub create_config {
-    my $input = shift;
-    open my $f, ">", $main::CONFIG_FILE{path} or return 0;
-    print $f $input;
-    close $f;
-    return 1;
-}
-sub remove_config {
-    if (-f $main::CONFIG_FILE{path}) {
-        unlink $main::CONFIG_FILE{path};
-    }
-}
-sub override {
-    *config_error         = \&__config_error;
-    *ld_gethostservbyname = \&__ld_gethostservbyname;
-    *parse_fallback       = \&__parse_fallback;
-    *parse_real           = \&__parse_real;
-    *ld_openlog           = \&__ld_openlog;
-    *_ld_service_resolve  = \&__ld_service_resolve;
-    *ld_setup             = \&__ld_setup;
-    *ld_cmd_children      = \&__ld_cmd_children;
-    *system_wrapper       = \&__system_wrapper;
-    *ld_log               = \&__ld_log;
-    *ld_start             = \&__ld_start;
-    *check_require_module = \&__check_require_module;
-}
-sub __config_error {
-    @config_error_args = @_;
-    die "config_error\n";
-}
-sub __ld_gethostservbyname {
-    push @ld_gethostservbyname_args, @_;
-    if ($ld_gethostservbyname_undef != 0) {
-        $ld_gethostservbyname_undef--;
-        if ($ld_gethostservbyname_undef == 0) {
-            return undef;
-        }
-    }
-    return $ld_gethostservbyname_return;
-}
-sub __parse_fallback {
-    push @parse_fallback_args, @_;
-    return $parse_fallback_return;
-}
-sub __parse_real {
-    push @parse_real_args, @_;
-    return $parse_real_return;
-}
-sub __ld_openlog {
-    $ld_openlog_arg = shift;
-    return $ld_openlog_return;
-}
-sub __get_hostservbyname {
-    @get_hostservbyname_args = @_;
-    return $get_hostservbyname_return;
-}
-sub __ld_service_resolve {
-    $_ld_service_resolve_called++;
-}
-sub __ld_cmd_children {
-    push @ld_cmd_children_args, [@_];
-}
-sub __system_wrapper {
-    $system_wrapper_called++;
-    return $system_wrapper_return;
-}
-sub __ld_setup {
-    die if $ld_setup_die;
-}
-sub __check_require_module {
-}
-sub __ld_start {
-}
-sub __read_config {
-    $main::CONFIG{virtual} = $read_config_virtual;
-    $main::CONFIG{execute} = $read_config_execute;
-    die if $read_config_die;
-}
-sub __ld_log {
-}
-
diff --git a/l7directord/t/06_convert.t b/l7directord/t/06_convert.t
deleted file mode 100644 (file)
index 13d37c9..0000000
+++ /dev/null
@@ -1,425 +0,0 @@
-use strict;
-use warnings;
-no warnings qw(redefine once);
-use lib qw(t/lib lib);
-use subs qw(print);
-use Cwd;
-use L7lib;
-use Test::More tests => 83;
-use Config;
-use Socket;
-use Socket6;
-
-L7lib::chdir();
-L7lib::comment_out();
-require './l7directord';
-
-override();
-
-#...............................................
-# test start
-#   - _ld_service_resolve
-{
-    my %v = ();
-    my $port = 80;
-    _ld_service_resolve(\%v, $port);
-    is $v{service}, 'http', '_ld_service_resolve - http ok';
-}
-{
-    my %v = ();
-    my $port = 443;
-    _ld_service_resolve(\%v, $port);
-    is $v{service}, 'https', '_ld_service_resolve - https ok';
-}
-{
-    my %v = ();
-    my $port = 21;
-    _ld_service_resolve(\%v, $port);
-    is $v{service}, 'ftp', '_ld_service_resolve - ftp ok';
-}
-{
-    my %v = ();
-    my $port = 25;
-    _ld_service_resolve(\%v, $port);
-    is $v{service}, 'smtp', '_ld_service_resolve - smtp ok';
-}
-{
-    my %v = ();
-    my $port = 110;
-    _ld_service_resolve(\%v, $port);
-    is $v{service}, 'pop', '_ld_service_resolve - pop ok';
-}
-{
-    my %v = ();
-    my $port = 119;
-    _ld_service_resolve(\%v, $port);
-    is $v{service}, 'nntp', '_ld_service_resolve - nntp ok';
-}
-{
-    my %v = ();
-    my $port = 143;
-    _ld_service_resolve(\%v, $port);
-    is $v{service}, 'imap', '_ld_service_resolve - imap ok';
-}
-{
-    my %v = ();
-    my $port = 389;
-    _ld_service_resolve(\%v, $port);
-    is $v{service}, 'ldap', '_ld_service_resolve - ldap ok';
-}
-{
-    my %v = ();
-    my $port = 53;
-    _ld_service_resolve(\%v, $port);
-    is $v{service}, 'dns', '_ld_service_resolve - dns ok';
-}
-{
-    my %v = ();
-    my $port = 3306;
-    _ld_service_resolve(\%v, $port);
-    is $v{service}, 'mysql', '_ld_service_resolve - mysql ok';
-}
-{
-    my %v = ();
-    my $port = 5432;
-    _ld_service_resolve(\%v, $port);
-    is $v{service}, 'pgsql', '_ld_service_resolve - pgsql ok';
-}
-{
-    my %v = ();
-    my $port = 5060;
-    _ld_service_resolve(\%v, $port);
-    is $v{service}, 'sip', '_ld_service_resolve - sip ok';
-}
-{
-    my %v = ();
-    my $port = 100000;
-    _ld_service_resolve(\%v, $port);
-    is $v{service}, 'none', '_ld_service_resolve - none ok';
-}
-{
-    my $port = 100000;
-    _ld_service_resolve(undef, $port);
-}
-{
-    my %v = ();
-    _ld_service_resolve(\%v, undef);
-    is $v{service}, undef, '_ld_service_resolve - port is undef';
-}
-{
-    my %v = ( service => 'pop' );
-    my $port = 80;
-    _ld_service_resolve(\%v, $port);
-    is $v{service}, 'pop', '_ld_service_resolve - service is already exist';
-}
-#   - is_octet
-{
-    my $got = is_octet(0);
-    is $got, 1, 'is_octet - 0 is ok';
-}
-{
-    my $got = is_octet(-1);
-    is $got, 0, 'is_octet - -1 is error';
-}
-{
-    my $got = is_octet(255);
-    is $got, 1, 'is_octet - 255 is ok';
-}
-{
-    my $got = is_octet(256);
-    is $got, 0, 'is_octet - 256 is error';
-}
-{
-    my $got = is_octet();
-    is $got, 0, 'is_octet - undef is error';
-}
-{
-    my $got = is_octet('one');
-    is $got, 0, 'is_octet - one(string) is error';
-}
-#   - is_ip
-{
-    my $got = is_ip();
-    is $got, 0, 'is_ip - undef is error';
-}
-{
-    my $got = is_ip('0.0.0.0');
-    is $got, 1, 'is_ip - 0.0.0.0 is ok';
-}
-{
-    my $got = is_ip('-1.-1.-1.-1');
-    is $got, 0, 'is_ip - -1.-1.-1.-1 is error';
-}
-{
-    my $got = is_ip('255.255.255.255');
-    is $got, 1, 'is_ip - 255.255.255.255 is ok';
-}
-{
-    my $got = is_ip('256.256.256.256');
-    is $got, 0, 'is_ip - 256.256.256.256 is error';
-}
-{
-    my $got = is_ip('localhost');
-    is $got, 0, 'is_ip - localhost(invalid format) is error';
-}
-###############################################################################################
-#   - is_ip6  IPv6 function
-{
-### Pattern ip:none
-    my @got = is_ip6();
-    my ($ret, @address ) = @got;
-    is $ret, 0, 'is_ip6 - undef is error';
-}
-{
-### Pattern ip:
-    my @got = is_ip6('[::0]');
-    my ($ret, @address ) = @got;
-    is $ret, 1, 'is_ip6 - [::0] is ok';
-}
-{
-### Pattern ip:[::1]
-    my @got = is_ip6('[::1]');
-    my ($ret, @address ) = @got;
-    is $ret, 1, 'is_ip6 - [::1] is ok';
-}
-{
-### Pattern ip:[2001::1]
-    my @got = is_ip6('[2001::1]');
-    my ($ret, @address ) = @got;
-    is $ret, 1, 'is_ip6 - [2001::1] is ok';
-}
-{
-### Pattern ip:[fe80::1%eth1]
-    my @got = is_ip6('[fe80::1%eth1]');
-    my ($ret, @address ) = @got;
-    is $ret, 1, 'is_ip6 - [fe80::1%eth1] is ok';
-    my $alleged_ip  = join ":", @address;
-    is $alleged_ip, 'fe80:0:0:0:0:0:0:1%eth1', 'is_ip6 - [fe80::1%eth1] is ok';
-}
-{
-### Pattern ip:[1234:5678:90ab:cdef:1234:5678:90ab:cdef]
-    my @got = is_ip6('[1234:5678:90ab:cdef:1234:5678:90ab:cdef]');
-    my ($ret, @address ) = @got;
-    is $ret, 1, 'is_ip6 - [1234:5678:90ab:cdef:1234:5678:90ab:cdef] is ok';
-}
-{
-### Pattern ip:[::90ab:cdef:1234:5678:90ab:cdef]
-    my @got = is_ip6('[::90ab:cdef:1234:5678:90ab:cdef]');
-    my ($ret, @address ) = @got;
-    is $ret, 1, 'is_ip6 - [::90ab:cdef:1234:5678:90ab:cdef] is ok';
-}
-{
-### Pattern ip:[1234:5678:90ab:cdef:1234:5678::]
-    my @got = is_ip6('[1234:5678:90ab:cdef:1234:5678::]');
-    my ($ret, @address ) = @got;
-    is $ret, 1, 'is_ip6 - [1234:5678:90ab:cdef:1234:5678::] is ok';
-}
-{
-### Pattern ip:[1234:5678:90ab:cdef:1234:5678::2]
-    my @got = is_ip6('[1234:5678:90ab:cdef:1234:5678::2]');
-    my ($ret, @address ) = @got;
-    is $ret, 1, 'is_ip6 - [1234:5678:90ab:cdef:1234:5678::2] is ok';
-}
-{
-### Pattern ip:[1234:5678:9012:3456:7890:1234:5678:9012:3456]
-    my @got = is_ip6('[1234:5678:9012:3456:7890:1234:5678:9012:3456]');
-    my ($ret, @address ) = @got;
-    is $ret, 0, 'is_ip6 - [1234:5678:9012:3456:7890:1234:5678:9012:3456] is error';
-}
-{
-### Pattern ip:[fffz::ffff]
-    my @got = is_ip6('[fffz::ffff]');
-    my ($ret, @address ) = @got;
-    is $ret, 0, 'is_ip6 - [fffz::ffff] is error';
-}
-{
-### Pattern ip:localhost
-    my @got = is_ip6('localhost');
-    my ($ret, @address ) = @got;
-    is $ret, 0, 'is_ip6 - localhost(invalid format) is error';
-}
-###############################################################################################
-#   - ip_to_int
-{
-    my @got = ip_to_int();
-    my ($ipver, $addr ) = @got;
-    is $addr, -1, 'ip_to_int - undef is error';
-}
-{
-    my @got = ip_to_int('0.0.0.0');
-    my ($ipver, $addr ) = @got;
-    is $addr, 0, 'ip_to_int - 0.0.0.0 is ok';
-}
-{
-    my @got = ip_to_int('-1.-1.-1.-1');
-    my ($ipver, $addr ) = @got;
-    is $addr, -1, 'ip_to_int - -1.-1.-1.-1 is error';
-}
-{
-    my @got = ip_to_int('255.255.255.255');
-    my ($ipver, $addr ) = @got;
-    is $addr, 4294967295, 'ip_to_int - 255.255.255.255 is ok';
-}
-{
-    my @got = ip_to_int('127.0.0.1');
-    my ($ipver, $addr ) = @got;
-    is $addr, 2130706433, 'ip_to_int - 127.0.0.1 is ok';
-}
-{
-    my @got = ip_to_int('256.256.256.256');
-    my ($ipver, $addr ) = @got;
-    is $addr, -1, 'ip_to_int - 256.256.256.256 is error';
-}
-{
-    my @got = ip_to_int('localhost');
-    my ($ipver, $addr ) = @got;
-    is $addr, -1, 'ip_to_int - localhost(invalid format) is error';
-}
-## IPv6 Function
-{
-print "IPv6 Start\n";
-    my @got = ip_to_int('::');
-    my ($ipver, $addr ) = @got;
-    is $addr, 0, 'ip_to_int - [::] is ok';
-}
-{
-    my @got = ip_to_int('[::1]');
-    my ($ipver, $addr ) = @got;
-    is $addr, 1, 'ip_to_int - [::1] is ok';
-}
-{
-    my @got = ip_to_int('[2001::1]');
-    my ($ipver, $addr, $addr2 ) = @got;
-    is $ipver, 'ipv6', 'ip_to_int - ipv6 is ok';
-    is $addr, 1, 'ip_to_int - [2001::1] -> interface is ok';
-    is $addr2, 2306124484190404608, 'ip_to_int - [2001::1] prefix is ok';
-}
-{
-    my @got = ip_to_int('[1:2:3:4:5:6:7:8]');
-    my ($ipver, $addr, $addr2 ) = @got;
-    is $ipver, 'ipv6', 'ip_to_int - ipv6 is ok';
-    is $addr, 1407400653815816, 'ip_to_int - [1:2:3:4:5:6:7:8] -> interface is ok';
-    is $addr2, 281483566841860, 'ip_to_int - [1:2:3:4:5:6:7:8] is ok';
-}
-{
-    my @got = ip_to_int('[1234:5678:90ab:cdef:1234:5678:90ab:cdef]');
-    my ($ipver, $addr, $addr2 ) = @got;
-    is $ipver, 'ipv6', 'ip_to_int - ipv6 is ok';
-    is $addr, 1311768467294899695, 'ip_to_int - [1234:5678:90ab:cdef:1234:5678:90ab:cdef] -> interface is ok';
-    is $addr2, 1311768467294899695, 'ip_to_int - [1234:5678:90ab:cdef:1234:5678:90ab:cdef] is ok';
-}
-{
-    my @got = ip_to_int('[::90ab:cdef:1234:5678:90ab:cdef]');
-    my ($ipver, $addr, $addr2 ) = @got;
-    is $ipver, 'ipv6', 'ip_to_int - ipv6 is ok';
-    is $addr, 1311768467294899695, 'ip_to_int - [::90ab:cdef:1234:5678:90ab:cdef] -> interface is ok';
-    is $addr2, 2427178479, 'ip_to_int - [::90ab:cdef:1234:5678:90ab:cdef] is ok';
-}
-{
-    my @got = ip_to_int('[1234:5678:90ab:cdef:1234:5678::]');
-    my ($ipver, $addr, $addr2 ) = @got;
-    is $ipver, 'ipv6', 'ip_to_int - ipv6 is ok';
-    is $addr, 1311768464867721216, 'ip_to_int - [1234:5678:90ab:cdef:1234:5678::] -> interface is ok';
-    is $addr2, 1311768467294899695, 'ip_to_int - [1234:5678:90ab:cdef:1234:5678::] is ok';
-}
-{
-    my @got = ip_to_int('[1234:5678:90ab:cdef:1234:5678::2]');
-    my ($ipver, $addr, $addr2 ) = @got;
-    is $ipver, 'ipv6', 'ip_to_int - ipv6 is ok';
-    is $addr, 1311768464867721218, 'ip_to_int - [1234:5678:90ab:cdef:1234:5678::2] -> interface is ok';
-    is $addr2, 1311768467294899695, 'ip_to_int - [1234:5678:90ab:cdef:1234:5678::2] is ok';
-}
-{
-    my @got = ip_to_int('[1234:5678:9012:3456:7890:1234:5678:9012:3456]');
-    my ($ipver, $addr ) = @got;
-    is $addr, -1, 'ip_to_int - [1234:5678:9012:3456:7890:1234:5678:9012:3456] is error';
-}
-{
-    my @got = ip_to_int('fffz::ffff');
-    my ($ipver, $addr ) = @got;
-    is $addr, -1, 'ip_to_int - fffz::ffff is error';
-}
-###############################################################################################
-#   - int_to_ip
-#   - int_to_ip
-{
-    my $got = int_to_ip('ipv4', 0 );
-    is $got, '0.0.0.0', 'int_to_ip - 0 is ok';
-}
-{
-    my $got = int_to_ip('ipv4', -1);
-    is $got, undef, 'int_to_ip - -1 is error';
-}
-{
-    my $got = int_to_ip('ipv4', 2130706433);
-    is $got, '127.0.0.1', 'int_to_ip - 2130706433 is ok';
-}
-{
-    my $got = int_to_ip('ipv4', 4294967295);
-    is $got, '255.255.255.255', 'int_to_ip - 4294967295 is ok';
-}
-SKIP: {
-    my $got = int_to_ip('ipv4', 4294967296);
-    if ( $Config{'use64bitint'} ) {
-        is $got, '0.0.0.0', 'int_to_ip - 4294967296 is ok (overflow)';
-    }
-    else {
-        is $got, '255.255.255.255', 'int_to_ip - 4294967296 is ok (overflow)';
-    }
-}
-{
-    my $got = int_to_ip();
-    is $got, undef, 'int_to_ip - undef is error';
-}
-{
-    my $got = int_to_ip('ipv4','one');
-    is $got, undef, 'int_to_ip - one(string) is error';
-}
-###
-### IPv6 Tests
-###
-{
-    my $got = int_to_ip('ipv6', 0, 0);
-    is $got, '0:0:0:0:0:0:0:0', 'int_to_ip - 0:0:0:0:0:0:0:0 is ok';
-}
-{
-    my $got = int_to_ip('ipv6', 1, 0);
-    is $got, '0:0:0:0:0:0:0:1', 'int_to_ip - 0:0:0:0:0:0:0:1 is ok';
-}
-{
-    my $got = int_to_ip('ipv6', 1407400653815816,281483566841860);
-    is $got, '1:2:3:4:5:6:7:8', 'int_to_ip - [1:2:3:4:5:6:7:8] is ok';
-}
-{
-    my $got = int_to_ip('ipv6', 1311768467294899695,1311768467294899695);
-    is $got, '1234:5678:90ab:cdef:1234:5678:90ab:cdef', 'int_to_ip - [1234:5678:90ab:cdef:1234:5678:90ab:cdef] is ok';
-}
-## ::90ab:cdef:1234:5678:90ab:cdef
-{
-    my $got = int_to_ip('ipv6', 1311768467294899695, 2427178479);
-    is $got, '0:0:90ab:cdef:1234:5678:90ab:cdef', 'int_to_ip - [0:0:90ab:cdef:1234:5678:90ab:cdef] is ok';
-}
-## 1234:5678:90ab:cdef:1234:5678::
-{
-    my $got = int_to_ip('ipv6', 1311768464867721216,1311768467294899695);
-    is $got, '1234:5678:90ab:cdef:1234:5678:0:0', 'int_to_ip - [1234:5678:90ab:cdef:1234:5678:0:0] is ok';
-}
-## 1234:5678:90ab:cdef:1234:5678::2
-{
-    my $got = int_to_ip('ipv6', 1311768464867721218, 1311768467294899695);
-    is $got, '1234:5678:90ab:cdef:1234:5678:0:2', 'int_to_ip - [1234:5678:90ab:cdef:1234:5678:0:2] is ok';
-}
-
-
-
-#####################################################################
-# test end
-#...............................................
-
-L7lib::comment_in();
-
-sub override {
-    *ld_log = \&__ld_log;
-}
-sub __ld_log {
-}
diff --git a/l7directord/t/07_parse_address.t b/l7directord/t/07_parse_address.t
deleted file mode 100644 (file)
index 8488e95..0000000
+++ /dev/null
@@ -1,560 +0,0 @@
-use strict; 
-use warnings;
-no warnings qw(redefine once);
-use lib qw(t/lib lib);
-use subs qw(print);
-use Cwd;    
-use L7lib;  
-use Test::More tests => 59;
-use Socket;
-use Socket6;
-            
-L7lib::chdir();
-L7lib::comment_out();
-require './l7directord';
-override(); 
-            
-our @config_error_args = ();
-our @ld_gethostservbyname_args = ();
-our $ld_gethostservbyname_return = undef;
-our @ld_gethostbyname_args = ();
-our @ld_gethostbyname_returns = ();
-our $ld_getservbyname_arg = undef;
-our $ld_getservbyname_return = undef;
-our @ip_to_int_args = ();
-our @ip_to_int_returns = ();
-our @int_to_ip_args = ();
-our @int_to_ip_returns = ();
-#...............................................
-# test start
-#   - parse_fallback
-{           
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = 'foo:bar';
-    my %expected = %main::REAL;
-    $expected{server} = $ld_gethostservbyname_return;
-    $expected{forward} = 'masq';
-    my $line = 1;
-    my $fallback = 'fallback masq';
-    my $config_line = 'configline';
-    my $ret = parse_fallback($line, $fallback, $config_line);
-    is_deeply $ret, \%expected, 'parse_fallback - ok';
-    is_deeply \@ld_gethostservbyname_args, [ 'fallback', 'tcp' ], 'parse_fallback - ld_gethostservbyname arg(1)';
-}           
-{
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = 'foo:bar';
-    my %expected = %main::REAL;
-    $expected{server} = $ld_gethostservbyname_return;
-    my $line = 1;
-    my $fallback = 'fallback';
-    my $config_line = 'configline';
-    my $ret = parse_fallback($line, $fallback, $config_line);
-    is_deeply $ret, \%expected, 'parse_fallback - no forward mode ok';
-    is_deeply \@ld_gethostservbyname_args, [ 'fallback', 'tcp' ], 'parse_fallback - ld_gethostservbyname arg(2)';
-}
-{
-    local @config_error_args = ();
-    my $line = 1;
-    my $fallback = ' fallback ';
-    my $config_line = 'configline';
-    eval {
-        my $ret = parse_fallback($line, $fallback, $config_line);
-    };
-    is $@, "config_error\n", 'parse_fallback - format error';
-    is_deeply \@config_error_args, [1, 'ERR0114', 'configline'], 'parse_fallback - config_error args(1)';
-}
-{
-    local @config_error_args = ();
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = undef;
-    my $line = 1;
-    my $fallback = 'fallback masq';
-    my $config_line = 'configline';
-    eval {
-        my $ret = parse_fallback($line, $fallback, $config_line);
-    };
-    is $@, "config_error\n", 'parse_fallback - ld_gethostservbyname error';
-    is_deeply \@config_error_args, [1, 'ERR0114', 'configline'], 'parse_fallback - config_error args(2)';
-    is_deeply \@ld_gethostservbyname_args, [ 'fallback', 'tcp' ], 'parse_fallback - ld_gethostservbyname arg(3)';
-}
-{
-    local @config_error_args = ();
-    local @ld_gethostservbyname_args = ();
-    local $ld_gethostservbyname_return = 'foo:bar';
-    my $line = 1;
-    my $fallback = 'fallback direct';
-    my $config_line = 'configline';
-    eval {
-        my $ret = parse_fallback($line, $fallback, $config_line);
-    }; 
-    is $@, "config_error\n", 'parse_fallback - forward mode error';
-    is_deeply \@config_error_args, [1, 'ERR0107', 'configline'], 'parse_fallback - config_error args(3)';
-    is_deeply \@ld_gethostservbyname_args, [ 'fallback', 'tcp' ], 'parse_fallback - ld_gethostservbyname arg(4)';
-}
-#   - parse_real
-{
-    local @ld_gethostbyname_args = ();
-    local @ld_gethostbyname_returns = ('1.1.1.1', '1.1.1.2');
-    local $ld_getservbyname_arg = undef;
-    local $ld_getservbyname_return = 80;
-    local @ip_to_int_args = ();
-    local @ip_to_int_returns = (1,2);
-    local @int_to_ip_args = ();
-    local @int_to_ip_returns = ('1.1.1.1', '1.1.1.2');
-    my %real = %main::REAL;
-    $real{forward} = 'masq';
-    $real{weight} = 100;
-    $real{request} = 'request';
-    $real{receive} = 'receive';
-    my @expected;
-    my $c = 0;
-    for ($ip_to_int_returns[0] .. $ip_to_int_returns[1]) {
-        my %r = %real;
-        push @expected, \%r;
-        $expected[$c]->{server}{ip}   = $int_to_ip_returns[$c];
-        $expected[$c]->{server}{port} = $ld_getservbyname_return;
-        $c++;
-    }
-    my @gethost_r =  @ld_gethostbyname_returns;
-    my @ip_to_r   =  @ip_to_int_returns;
-    my $line = 1;
-    my $real = q{foo.bar.com->hoge.huga.com:serv  Masq  100  "request" , 'receive'};
-    my $config_line = 'configline';
-    my $ret = parse_real($line, $real, $config_line);
-    is_deeply $ret, \@expected, 'parse_real - full parse ok';
-    is $ld_getservbyname_arg, 'serv', 'parse_real - ld_getservbyname arg(1)';
-    is_deeply \@ld_gethostbyname_args, ['foo.bar.com', 'hoge.huga.com'], 'parse_real - ld_gethostbyname arg(1)';
-##    is_deeply \@ip_to_int_args, \@gethost_r, 'parse_real - ip_to_int arg(1)';
-##    is_deeply \@int_to_ip_args, [ $ip_to_r[0] .. $ip_to_r[1] ], 'parse_real - int_to_ip arg(1)';
-}
-{
-    local @ld_gethostbyname_args = ();
-    local @ld_gethostbyname_returns = ('1.1.1.1', '1.1.1.1');
-    local $ld_getservbyname_arg = undef;
-    local $ld_getservbyname_return = 80;
-    local @ip_to_int_args = ();
-    local @ip_to_int_returns = (1, 1);
-    local @int_to_ip_args = ();
-    local @int_to_ip_returns = ('1.1.1.1');
-    my %real = %main::REAL;
-    $real{forward} = 'masq';
-    $real{weight} = 100;
-    $real{request} = 'request';
-    $real{receive} = 'receive';
-    my @expected;
-    my $c = 0;
-    for ($ip_to_int_returns[0] .. $ip_to_int_returns[1]) {
-        my %r = %real;
-        push @expected, \%r;
-        $expected[$c]->{server}{ip}   = $int_to_ip_returns[$c];
-        $expected[$c]->{server}{port} = $ld_getservbyname_return;
-        $c++;
-    }
-    my @gethost_r =  @ld_gethostbyname_returns;
-    my @ip_to_r   =  @ip_to_int_returns;
-    my $line = 1;
-    my $real = q{foo.bar.com->hoge.huga.com:serv  Masq  100  "request" , 'receive'};
-    my $config_line = 'configline';
-    my $ret = parse_real($line, $real, $config_line);
-    is_deeply $ret, \@expected, 'parse_real - same range ok';
-    is $ld_getservbyname_arg, 'serv', 'parse_real - ld_getservbyname arg(2)';
-    is_deeply \@ld_gethostbyname_args, ['foo.bar.com', 'hoge.huga.com'], 'parse_real - ld_gethostbyname arg(2)';
-##    is_deeply \@ip_to_int_args, \@gethost_r, 'parse_real - ip_to_int arg(2)';
-##    is_deeply \@int_to_ip_args, [ $ip_to_r[0] .. $ip_to_r[1] ], 'parse_real - int_to_ip arg(2)';
-}
-{
-    local @ld_gethostbyname_args = ();
-    local @ld_gethostbyname_returns = ('1.1.1.1', '1.1.1.1');
-    local $ld_getservbyname_arg = undef;
-    local $ld_getservbyname_return = 80;
-    local @ip_to_int_args = ();
-    local @ip_to_int_returns = (1, 1);
-    local @int_to_ip_args = ();
-    local @int_to_ip_returns = ('1.1.1.1');
-    my %real = %main::REAL;
-    $real{forward} = 'masq';
-    $real{weight} = 100;
-    $real{request} = 'request';
-    $real{receive} = 'receive';
-    my @expected;
-    my $c = 0;
-    for ($ip_to_int_returns[0] .. $ip_to_int_returns[1]) {
-        my %r = %real;
-        push @expected, \%r;
-        $expected[$c]->{server}{ip}   = $int_to_ip_returns[$c];
-        $expected[$c]->{server}{port} = $ld_getservbyname_return;
-        $c++;
-    }
-    my @gethost_r =  @ld_gethostbyname_returns;
-    my @ip_to_r   =  @ip_to_int_returns;
-    my $line = 1;
-    my $real = q{foo.bar.com:serv  Masq  100  "request" , 'receive'};
-    my $config_line = 'configline';
-    my $ret = parse_real($line, $real, $config_line);
-    is_deeply $ret, \@expected, 'parse_real - no range ok';
-    is $ld_getservbyname_arg, 'serv', 'parse_real - ld_getservbyname arg(3)';
-    is_deeply \@ld_gethostbyname_args, ['foo.bar.com'], 'parse_real - ld_gethostbyname arg(3)';
-##    is_deeply \@ip_to_int_args, \@gethost_r, 'parse_real - ip_to_int arg(3)';
-##    is_deeply \@int_to_ip_args, [ $ip_to_r[0] .. $ip_to_r[1] ], 'parse_real - int_to_ip arg(3)';
-}
-{
-    local @ld_gethostbyname_args = ();
-    local @ld_gethostbyname_returns = ('1.1.1.1', '1.1.1.1');
-    local @ip_to_int_args = ();
-    local @ip_to_int_returns = (1, 1);
-    local @int_to_ip_args = ();
-    local @int_to_ip_returns = ('1.1.1.1');
-    my %real = %main::REAL;
-    $real{forward} = 'masq';
-    $real{weight} = 100;
-    $real{request} = 'request';
-    $real{receive} = 'receive';
-    my @expected;
-    my $c = 0;
-    for ($ip_to_int_returns[0] .. $ip_to_int_returns[1]) {
-        my %r = %real;
-        push @expected, \%r;
-        $expected[$c]->{server}{ip}   = $int_to_ip_returns[$c];
-        $expected[$c]->{server}{port} = undef;
-        $c++;
-    }
-    my @gethost_r =  @ld_gethostbyname_returns;
-    my @ip_to_r   =  @ip_to_int_returns;
-    my $line = 1;
-    my $real = q{foo.bar.com  Masq  100  "request" , 'receive'};
-    my $config_line = 'configline';
-    my $ret = parse_real($line, $real, $config_line);
-    is_deeply $ret, \@expected, 'parse_real - no port ok';
-    is_deeply \@ld_gethostbyname_args, ['foo.bar.com'], 'parse_real - ld_gethostbyname arg(4)';
-##    is_deeply \@ip_to_int_args, \@gethost_r, 'parse_real - ip_to_int arg(4)';
-##    is_deeply \@int_to_ip_args, [ $ip_to_r[0] .. $ip_to_r[1] ], 'parse_real - int_to_ip arg(4)';
-}
-{
-    local @ld_gethostbyname_args = ();
-    local @ld_gethostbyname_returns = ('1.1.1.1', '1.1.1.1');
-    local @ip_to_int_args = ();
-    local @ip_to_int_returns = (1, 1);
-    local @int_to_ip_args = ();
-    local @int_to_ip_returns = ('1.1.1.1');
-    my %real = %main::REAL;
-    $real{weight} = 100;
-    $real{request} = 'request';
-    $real{receive} = 'receive';
-    my @expected;
-    my $c = 0;
-    for ($ip_to_int_returns[0] .. $ip_to_int_returns[1]) {
-        my %r = %real;
-        push @expected, \%r;
-        $expected[$c]->{server}{ip}   = $int_to_ip_returns[$c];
-        $expected[$c]->{server}{port} = undef;
-        $c++;
-    }
-    my @gethost_r =  @ld_gethostbyname_returns;
-    my @ip_to_r   =  @ip_to_int_returns;
-    my $line = 1;
-    my $real = q{foo.bar.com  100  "request" , 'receive'};
-    my $config_line = 'configline';
-    my $ret = parse_real($line, $real, $config_line);
-    is_deeply $ret, \@expected, 'parse_real - no forward mode ok';
-    is_deeply \@ld_gethostbyname_args, ['foo.bar.com'], 'parse_real - ld_gethostbyname arg(5)';
-##    is_deeply \@ip_to_int_args, \@gethost_r, 'parse_real - ip_to_int arg(5)';
-##    is_deeply \@int_to_ip_args, [ $ip_to_r[0] .. $ip_to_r[1] ], 'parse_real - int_to_ip arg(5)';
-}
-{
-    local @ld_gethostbyname_args = ();
-    local @ld_gethostbyname_returns = ('1.1.1.1', '1.1.1.1');
-    local @ip_to_int_args = ();
-    local @ip_to_int_returns = (1, 1);
-    local @int_to_ip_args = ();
-    local @int_to_ip_returns = ('1.1.1.1');
-    my %real = %main::REAL;
-    $real{request} = 'request';
-    $real{receive} = 'receive';
-    my @expected;
-    my $c = 0;
-    for ($ip_to_int_returns[0] .. $ip_to_int_returns[1]) {
-        my %r = %real;
-        push @expected, \%r;
-        $expected[$c]->{server}{ip}   = $int_to_ip_returns[$c];
-        $expected[$c]->{server}{port} = undef;
-        $c++;
-    }
-    my @gethost_r =  @ld_gethostbyname_returns;
-    my @ip_to_r   =  @ip_to_int_returns;
-    my $line = 1;
-    my $real = q{foo.bar.com    "request" , 'receive'};
-    my $config_line = 'configline';
-    my $ret = parse_real($line, $real, $config_line);
-    is_deeply $ret, \@expected, 'parse_real - no weight ok';
-    is_deeply \@ld_gethostbyname_args, ['foo.bar.com'], 'parse_real - ld_gethostbyname arg(6)';
-##    is_deeply \@ip_to_int_args, \@gethost_r, 'parse_real - ip_to_int arg(6)';
-##    is_deeply \@int_to_ip_args, [ $ip_to_r[0] .. $ip_to_r[1] ], 'parse_real - int_to_ip arg(6)';
-}
-{
-    local @ld_gethostbyname_args = ();
-    local @ld_gethostbyname_returns = ('1.1.1.1', '1.1.1.1');
-    local @ip_to_int_args = ();
-    local @ip_to_int_returns = (1, 1);
-    local @int_to_ip_args = ();
-    local @int_to_ip_returns = ('1.1.1.1');
-    my %real = %main::REAL;
-    my @expected;
-    my $c = 0;
-    for ($ip_to_int_returns[0] .. $ip_to_int_returns[1]) {
-        my %r = %real;
-        push @expected, \%r;
-        $expected[$c]->{server}{ip}   = $int_to_ip_returns[$c];
-        $expected[$c]->{server}{port} = undef;
-        $c++;
-    }
-    my @gethost_r =  @ld_gethostbyname_returns;
-    my @ip_to_r   =  @ip_to_int_returns;
-    my $line = 1;
-    my $real = q{foo.bar.com};
-    my $config_line = 'configline';
-    my $ret = parse_real($line, $real, $config_line);
-    is_deeply $ret, \@expected, 'parse_real - no request, receive ok';
-    is_deeply \@ld_gethostbyname_args, ['foo.bar.com'], 'parse_real - ld_gethostbyname arg(7)';
-##    is_deeply \@ip_to_int_args, \@gethost_r, 'parse_real - ip_to_int arg(7)';
-##    is_deeply \@int_to_ip_args, [ $ip_to_r[0] .. $ip_to_r[1] ], 'parse_real - int_to_ip arg(7)';
-}
-{
-    local @config_error_args = ();
-    my $line = 1;
-    my $real = q{foo.bar.com:bad:format};
-    my $config_line = 'configline';
-    eval {
-        my $ret = parse_real($line, $real, $config_line);
-    };
-    is $@, "config_error\n", 'parse_real - format error';
-    is_deeply \@config_error_args, [1, 'ERR0114', 'configline'], 'parse_real - config_error args(1)';
-}
-{
-    local @config_error_args = ();
-    my $line = 1;
-    my $real = q{foo.bar.com:bad direct};
-    my $config_line = 'configline';
-    eval {
-        my $ret = parse_real($line, $real, $config_line);
-    };
-    is $@, "config_error\n", 'parse_real - forward mode error';
-    is_deeply \@config_error_args, [1, 'ERR0107', 'configline'], 'parse_real - config_error args(2)';
-}
-{
-    local @config_error_args = ();
-    local $ld_getservbyname_arg = undef;
-    local $ld_getservbyname_return = undef;
-    my $line = 1;
-    my $real = q{foo.bar.com:bad masq};
-    my $config_line = 'configline';
-    eval {
-        my $ret = parse_real($line, $real, $config_line);
-    };
-    is $@, "config_error\n", 'parse_real - ld_getservbyname error';
-    is_deeply \@config_error_args, [1, 'ERR0108', 'configline'], 'parse_real - config_error args(3)';
-    is $ld_getservbyname_arg, 'bad', 'parse_real - ld_getservbyname args(4)';
-}
-{
-    local @config_error_args = ();
-    local $ld_getservbyname_arg = undef;
-    local $ld_getservbyname_return = 80;
-    local @ld_gethostbyname_args = ();
-    local @ld_gethostbyname_returns = ();
-    my $line = 1;
-    my $real = q{foo.bar.com:bad masq};
-    my $config_line = 'configline';
-    eval {
-        my $ret = parse_real($line, $real, $config_line);
-    };
-    is $@, "config_error\n", 'parse_real - first ld_gethostbyname error';
-    is_deeply \@config_error_args, [1, 'ERR0114', 'configline'], 'parse_real - config_error args(4)';
-    is $ld_getservbyname_arg, 'bad', 'parse_real - ld_getservbyname args(5)';
-    is_deeply \@ld_gethostbyname_args, ['foo.bar.com'], 'parse_real - ld_gethostbyname args(5)';
-}
-{
-    local @config_error_args = ();
-    local $ld_getservbyname_arg = undef;
-    local $ld_getservbyname_return = 80;
-    local @ld_gethostbyname_args = ();
-    local @ld_gethostbyname_returns = ('1.1.1.1');
-    my $line = 1;
-    my $real = q{foo.bar.com->hoge.huga.com:bad masq};
-    my $config_line = 'configline';
-    eval {
-        my $ret = parse_real($line, $real, $config_line);
-    };
-    is $@, "config_error\n", 'parse_real - second ld_gethostbyname error';
-    is_deeply \@config_error_args, [1, 'ERR0114', 'configline'], 'parse_real - config_error args(5)';
-    is $ld_getservbyname_arg, 'bad', 'parse_real - ld_getservbyname args(6)';
-    is_deeply \@ld_gethostbyname_args, ['foo.bar.com', 'hoge.huga.com'], 'parse_real - ld_gethostbyname args(6)';
-}
-{
-    local @config_error_args = ();
-    local $ld_getservbyname_arg = undef;
-    local $ld_getservbyname_return = 80;
-    local @ld_gethostbyname_args = ();
-    local @ld_gethostbyname_returns = ( '2.2.2.2','1.1.1.1');
-    local @ip_to_int_args = ();
-    local @ip_to_int_returns = (2, 1);
-    my $line = 1;
-    my $real = q{foo.bar.com->hoge.huga.com:bad masq};
-    my $config_line = 'configline';
-    my @gethost_r = @ld_gethostbyname_returns;
-    eval {
-        my $ret = parse_real($line, $real, $config_line);
-    };
-    is $@, "config_error\n", 'parse_real - second ld_gethostbyname error';
-    is_deeply \@config_error_args, [1, 'ERR0115', '2.2.2.2', '1.1.1.1', 'configline'], 'parse_real - config_error args(5)';
-    is $ld_getservbyname_arg, 'bad', 'parse_real - ld_getservbyname args(6)';
-    is_deeply \@ld_gethostbyname_args, ['foo.bar.com', 'hoge.huga.com'], 'parse_real - ld_gethostbyname args(6)';
-##    is_deeply \@ip_to_int_args, \@gethost_r, 'parse_real - ip_to_int arg(8)';
-}
-###################################################################
-##  - parse_real (IPv6)
-{
-    local @ld_gethostbyname_args = ();
-    local @ld_gethostbyname_returns = ('[2001::1]', '[2001::2]');
-    local $ld_getservbyname_arg = undef;
-    local $ld_getservbyname_return = 80;
-    local @ip_to_int_args = ('[2001::1]', '[2001::2]');
-    local @ip_to_int_returns = (2306124484190404608,2306124484190404609);
-    local @int_to_ip_args = (2306124484190404608,2306124484190404609);
-    local @int_to_ip_returns = ('[2001::1]', '[2001::2]');
-    my %real = %main::REAL;
-    $real{forward} = 'masq';
-    $real{weight} = 100;
-    $real{request} = 'request';
-    $real{receive} = 'receive';
-    my @expected;
-    my $c = 0;
-    for ($ip_to_int_returns[0] .. $ip_to_int_returns[1]) {
-        my %r = %real;
-        push @expected, \%r;
-        $expected[$c]->{server}{ip}   = $int_to_ip_returns[$c];
-        $expected[$c]->{server}{port} = $ld_getservbyname_return;
-        $c++;
-    }
-    my @gethost_r =  @ld_gethostbyname_returns;
-    my @ip_to_r   =  @ip_to_int_returns;
-    my $line = 1;
-    my $real = q{foo.bar.com->hoge.huga.com:serv  Masq  100  "request" , 'receive'};
-    my $config_line = 'configline';
-    my $ret = parse_real($line, $real, $config_line);
-    is_deeply $ret, \@expected, 'parse_real - full parse ok';
-    is $ld_getservbyname_arg, 'serv', 'parse_real - ld_getservbyname arg(1)';
-    is_deeply \@ld_gethostbyname_args, ['foo.bar.com', 'hoge.huga.com'], 'parse_real - ld_gethostbyname arg(1)';
-    is_deeply \@ip_to_int_args, \@gethost_r, 'parse_real - ip_to_int arg(1)';
-    is_deeply [$int_to_ip_args[0] .. $int_to_ip_args[1] ], [ $ip_to_r[0] .. $ip_to_r[1] ], 'parse_real - int_to_ip arg(1)';
-}
-##  - parse_real (IPv6)
-{
-    local @ld_gethostbyname_args = ();
-    local @ld_gethostbyname_returns = ('[2001::1]', '[2001::1]');
-    local $ld_getservbyname_arg = undef;
-    local $ld_getservbyname_return = 80;
-    local @ip_to_int_args = ();
-    local @ip_to_int_returns = (1,1);
-    local @int_to_ip_args = ();
-    local @int_to_ip_returns = ('[2001::1]', '[2001::1]');
-    my %real = %main::REAL;
-    $real{forward} = 'masq';
-    $real{weight} = 100;
-    $real{request} = 'request';
-    $real{receive} = 'receive';
-    my @expected;
-    my $c = 0;
-    for ($ip_to_int_returns[0] .. $ip_to_int_returns[1]) {
-        my %r = %real;
-        push @expected, \%r;
-        $expected[$c]->{server}{ip}   = $int_to_ip_returns[$c];
-        $expected[$c]->{server}{port} = $ld_getservbyname_return;
-        $c++;
-    }
-    my @gethost_r =  @ld_gethostbyname_returns;
-    my @ip_to_r   =  @ip_to_int_returns;
-    my $line = 1;
-    my $real = q{foo.bar.com->hoge.huga.com:serv  Masq  100  "request" , 'receive'};
-    my $config_line = 'configline';
-    my $ret = parse_real($line, $real, $config_line);
-    is_deeply $ret, \@expected, 'parse_real - full parse ok';
-    is $ld_getservbyname_arg, 'serv', 'parse_real - ld_getservbyname arg(1)';
-    is_deeply \@ld_gethostbyname_args, ['foo.bar.com', 'hoge.huga.com'], 'parse_real - ld_gethostbyname arg(1)';
-##    is_deeply \@ip_to_int_args, \@gethost_r, 'parse_real - ip_to_int arg(1)';
-##    is_deeply \@int_to_ip_args, [ $ip_to_r[0] .. $ip_to_r[1] ], 'parse_real - int_to_ip arg(1)';
-}
-{
-    local @ld_gethostbyname_args = ();
-    local @ld_gethostbyname_returns = ('[2001::1]', '[2001::2]');
-    local $ld_getservbyname_arg = undef;
-    local $ld_getservbyname_return = 80;
-    local @ip_to_int_args = ();
-    local @ip_to_int_returns = (1,2);
-    local @int_to_ip_args = ();
-    local @int_to_ip_returns = ('[2001::1]', '[2001::2]');
-    my %real = %main::REAL;
-    $real{forward} = 'masq';
-    $real{weight} = 100;
-    $real{request} = 'request';
-    $real{receive} = 'receive';
-    my @expected;
-    my $c = 0;
-    for ($ip_to_int_returns[0] .. $ip_to_int_returns[1]) {
-        my %r = %real;
-        push @expected, \%r;
-        $expected[$c]->{server}{ip}   = $int_to_ip_returns[$c];
-        $expected[$c]->{server}{port} = $ld_getservbyname_return;
-        $c++;
-    }
-    my @gethost_r =  @ld_gethostbyname_returns;
-    my @ip_to_r   =  @ip_to_int_returns;
-    my $line = 1;
-    my $real = q{[ffff:1:2:3:4:5:6:7:8]->[ffff:1:2:3:4:5:6:7:9]:serv  Masq  100  "request" , 'receive'};
-    my $config_line = 'configline';
-    my $ret = parse_real($line, $real, $config_line);
-    is_deeply $ret, \@expected, 'parse_real - full parse ok';
-    is $ld_getservbyname_arg, 'serv', 'parse_real - ld_getservbyname arg(1)';
-    is_deeply \@ld_gethostbyname_args, ['[ffff:1:2:3:4:5:6:7:8]', '[ffff:1:2:3:4:5:6:7:9]'], 'parse_real - ld_gethostbyname arg(1)';
-##    is_deeply \@ip_to_int_args, \@gethost_r, 'parse_real - ip_to_int arg(1)';
-##    is_deeply \@int_to_ip_args, [ $ip_to_r[0] .. $ip_to_r[1] ], 'parse_real - int_to_ip arg(1)';
-}
-# test end
-#...............................................
-
-L7lib::comment_in();
-
-sub override {
-    *config_error         = \&__config_error;
-    *ld_gethostservbyname = \&__ld_gethostservbyname;
-    *ld_gethostbyname = \&__ld_gethostbyname;
-    *ld_getservbyname = \&__ld_getservbyname;
-##    *ip_to_int = \&__ip_to_int;
-    *int_to_ip = \&__int_to_ip;
-    *ld_log = \&__ld_log;
-}
-sub __config_error {
-    @config_error_args = @_;
-    die "config_error\n";
-}           
-sub __ld_gethostservbyname {
-    push @ld_gethostservbyname_args, @_;
-    return $ld_gethostservbyname_return;
-}
-sub __ld_gethostbyname {
-    push @ld_gethostbyname_args, @_;
-    return shift @ld_gethostbyname_returns;
-}
-sub __ld_getservbyname {
-    $ld_getservbyname_arg = shift;
-    return $ld_getservbyname_return;
-}
-sub __ip_to_int {
-    push @ip_to_int_args, @_;
-    return shift @ip_to_int_returns;
-}
-sub __int_to_ip {
-    push @int_to_ip_args, @_;
-    return shift @int_to_ip_returns;
-}
-sub __ld_log {
-}
diff --git a/l7directord/t/08_setup.t b/l7directord/t/08_setup.t
deleted file mode 100644 (file)
index a5a7ab3..0000000
+++ /dev/null
@@ -1,1477 +0,0 @@
-use strict;
-use warnings;
-no warnings qw(redefine once);
-use lib qw(t/lib lib);
-use subs qw(print);
-use Cwd;
-use L7lib;
-use Test::More tests => 45;
-use Socket;
-use Socket6;
-
-L7lib::chdir();
-L7lib::comment_out();
-require './l7directord';
-override();
-
-our @get_ip_port_args = ();
-our @get_ip_port_returns = ();
-our @get_forward_flag_args = ();
-our @get_forward_flag_returns = ();
-#...............................................
-# test start
-#   - ld_setup
-{
-    set_default();
-    local @get_ip_port_args = ();
-    local @get_ip_port_returns = ();
-    local @get_forward_flag_args = ();
-    local @get_forward_flag_returns = ();
-    my %expected = %main::GLOBAL;
-    ld_setup();
-    is_deeply \%main::CONFIG, \%expected, 'ld_setup - empty virtual ok';
-}
-{
-    set_default();
-    local @get_ip_port_args = ();
-    local @get_ip_port_returns = ();
-    local @get_forward_flag_args = ();
-    local @get_forward_flag_returns = ();
-    my %expected = %main::GLOBAL;
-    $expected{virtual}     = [ undef, undef, undef ];
-    $main::CONFIG{virtual} = [ undef, undef, undef ];
-    ld_setup();
-    is_deeply \%main::CONFIG, \%expected, 'ld_setup - virtual undef list ok';
-}
-{
-    set_default();
-    local @get_ip_port_args = ();
-    local @get_ip_port_returns = ();
-    local @get_forward_flag_args = ();
-    local @get_forward_flag_returns = ();
-    my %expected = %main::GLOBAL;
-    $main::CONFIG{virtual} = [ undef, undef, {
-        protocol => 'tcp',
-                                             } ];
-    $expected{virtual}     = [ undef, undef, {
-        option => { protocol => '-t' },
-        protocol => 'tcp',
-        checkcount => $main::CONFIG{checkcount},
-        checktimeout => $main::CONFIG{checktimeout},
-        negotiatetimeout => $main::CONFIG{negotiatetimeout},
-        checkinterval => $main::CONFIG{checkinterval},
-        retryinterval => $main::CONFIG{retryinterval},
-        quiescent => $main::CONFIG{quiescent},
-                                             } ];
-    ld_setup();
-    is_deeply \%main::CONFIG, \%expected, 'ld_setup - protocol tcp ok';
-}
-{
-    set_default();
-    local @get_ip_port_args = ();
-    local @get_ip_port_returns = ('ip:port');
-    local @get_forward_flag_args = ();
-    local @get_forward_flag_returns = ();
-    my %expected = %main::GLOBAL;
-    $main::CONFIG{virtual} = [ undef, undef, {
-        option => { protocol => '-t' },
-        module => { name => 'cinsert' },
-        other_virtual_key => undef,
-                                             } ];
-    $expected{virtual}     = [ undef, undef, {
-        option => {
-            protocol => '-t',
-            main  => '-t ip:port -m cinsert',
-            flags => '-t ip:port -m cinsert',
-        },
-        module => { name => 'cinsert' },
-        other_virtual_key => ' none none none none ',
-        checkcount => $main::CONFIG{checkcount},
-        checktimeout => $main::CONFIG{checktimeout},
-        negotiatetimeout => $main::CONFIG{negotiatetimeout},
-        checkinterval => $main::CONFIG{checkinterval},
-        retryinterval => $main::CONFIG{retryinterval},
-        quiescent => $main::CONFIG{quiescent},
-                                             } ];
-    ld_setup();
-    is_deeply \%main::CONFIG, \%expected, 'ld_setup - module minimum setup ok';
-}
-{
-    set_default();
-    local @get_ip_port_args = ();
-    local @get_ip_port_returns = ('ip:port');
-    local @get_forward_flag_args = ();
-    local @get_forward_flag_returns = ();
-    my %expected = %main::GLOBAL;
-    $main::CONFIG{virtual} = [ undef, undef, {
-        option => { protocol => '-t' },
-        module => {
-            name => 'cinsert',
-            option => '--cookie-name cookie',
-        },
-                                             } ];
-    $expected{virtual}     = [ undef, undef, {
-        option => {
-            protocol => '-t',
-            main  => '-t ip:port -m cinsert --cookie-name cookie',
-            flags => '-t ip:port -m cinsert --cookie-name cookie',
-        },
-        module => {
-            name => 'cinsert',
-            option => '--cookie-name cookie',
-        },
-        other_virtual_key => ' none none none none ',
-        checkcount => $main::CONFIG{checkcount},
-        checktimeout => $main::CONFIG{checktimeout},
-        negotiatetimeout => $main::CONFIG{negotiatetimeout},
-        checkinterval => $main::CONFIG{checkinterval},
-        retryinterval => $main::CONFIG{retryinterval},
-        quiescent => $main::CONFIG{quiescent},
-                                             } ];
-    ld_setup();
-    is_deeply \%main::CONFIG, \%expected, 'ld_setup - module option setup ok';
-}
-{
-    set_default();
-    local @get_ip_port_args = ();
-    local @get_ip_port_returns = ('ip:port');
-    local @get_forward_flag_args = ();
-    local @get_forward_flag_returns = ();
-    my %expected = %main::GLOBAL;
-    $main::CONFIG{virtual} = [ undef, undef, {
-        option => { protocol => '-t' },
-        module => {
-            name => 'cinsert',
-            option => '--cookie-name cookie',
-        },
-        scheduler => 'rr',
-                                             } ];
-    $expected{virtual}     = [ undef, undef, {
-        option => {
-            protocol => '-t',
-            main  => '-t ip:port -m cinsert --cookie-name cookie',
-            flags => '-t ip:port -m cinsert --cookie-name cookie -s rr',
-        },
-        module => {
-            name => 'cinsert',
-            option => '--cookie-name cookie',
-        },
-        scheduler => 'rr',
-        other_virtual_key => ' none none none none ',
-        checkcount => $main::CONFIG{checkcount},
-        checktimeout => $main::CONFIG{checktimeout},
-        negotiatetimeout => $main::CONFIG{negotiatetimeout},
-        checkinterval => $main::CONFIG{checkinterval},
-        retryinterval => $main::CONFIG{retryinterval},
-        quiescent => $main::CONFIG{quiescent},
-                                             } ];
-    ld_setup();
-    is_deeply \%main::CONFIG, \%expected, 'ld_setup - scheduler setup ok';
-}
-{
-    set_default();
-    local @get_ip_port_args = ();
-    local @get_ip_port_returns = ('ip:port');
-    local @get_forward_flag_args = ();
-    local @get_forward_flag_returns = ();
-    my %expected = %main::GLOBAL;
-    $main::CONFIG{virtual} = [ undef, undef, {
-        option => { protocol => '-t' },
-        module => {
-            name => 'cinsert',
-            option => '--cookie-name cookie',
-        },
-        scheduler => 'rr',
-        maxconn => 1000,
-                                             } ];
-    $expected{virtual}     = [ undef, undef, {
-        option => {
-            protocol => '-t',
-            main  => '-t ip:port -m cinsert --cookie-name cookie',
-            flags => '-t ip:port -m cinsert --cookie-name cookie -s rr -u 1000',
-        },
-        module => {
-            name => 'cinsert',
-            option => '--cookie-name cookie',
-        },
-        scheduler => 'rr',
-        maxconn => 1000,
-        other_virtual_key => ' none none none none ',
-        checkcount => $main::CONFIG{checkcount},
-        checktimeout => $main::CONFIG{checktimeout},
-        negotiatetimeout => $main::CONFIG{negotiatetimeout},
-        checkinterval => $main::CONFIG{checkinterval},
-        retryinterval => $main::CONFIG{retryinterval},
-        quiescent => $main::CONFIG{quiescent},
-                                             } ];
-    ld_setup();
-    is_deeply \%main::CONFIG, \%expected, 'ld_setup - maxconn setup ok';
-}
-{
-    set_default();
-    local @get_ip_port_args = ();
-    local @get_ip_port_returns = ('ip:port');
-    local @get_forward_flag_args = ();
-    local @get_forward_flag_returns = ();
-    my %expected = %main::GLOBAL;
-    $main::CONFIG{virtual} = [ undef, undef, {
-        option => { protocol => '-t' },
-        module => {
-            name => 'cinsert',
-            option => '--cookie-name cookie',
-        },
-        scheduler => 'rr',
-        maxconn => 1000,
-        sorryserver => { ip => 'sorryip', port => 'sorryport' },
-                                             } ];
-    $expected{virtual}     = [ undef, undef, {
-        option => {
-            protocol => '-t',
-            main  => '-t ip:port -m cinsert --cookie-name cookie',
-            flags => '-t ip:port -m cinsert --cookie-name cookie -s rr -u 1000 -b sorryip:sorryport',
-        },
-        module => {
-            name => 'cinsert',
-            option => '--cookie-name cookie',
-        },
-        scheduler => 'rr',
-        maxconn => 1000,
-        sorryserver => { ip => 'sorryip', port => 'sorryport' },
-        other_virtual_key => ' none none none none ',
-        checkcount => $main::CONFIG{checkcount},
-        checktimeout => $main::CONFIG{checktimeout},
-        negotiatetimeout => $main::CONFIG{negotiatetimeout},
-        checkinterval => $main::CONFIG{checkinterval},
-        retryinterval => $main::CONFIG{retryinterval},
-        quiescent => $main::CONFIG{quiescent},
-                                             } ];
-    ld_setup();
-    is_deeply \%main::CONFIG, \%expected, 'ld_setup - sorryserver setup ok';
-}
-{
-    set_default();
-    local @get_ip_port_args = ();
-    local @get_ip_port_returns = ('ip:port');
-    local @get_forward_flag_args = ();
-    local @get_forward_flag_returns = ();
-    my %expected = %main::GLOBAL;
-    $main::CONFIG{virtual} = [ undef, undef, {
-        option => { protocol => '-t' },
-        module => {
-            name => 'cinsert',
-            option => '--cookie-name cookie',
-        },
-        scheduler => 'rr',
-        maxconn => 1000,
-        sorryserver => { ip => 'sorryip', port => 'sorryport' },
-        qosup => '100M',
-                                             } ];
-    $expected{virtual}     = [ undef, undef, {
-        option => {
-            protocol => '-t',
-            main  => '-t ip:port -m cinsert --cookie-name cookie',
-            flags => '-t ip:port -m cinsert --cookie-name cookie -s rr -u 1000 -b sorryip:sorryport -Q 100M',
-        },
-        module => {
-            name => 'cinsert',
-            option => '--cookie-name cookie',
-        },
-        scheduler => 'rr',
-        maxconn => 1000,
-        sorryserver => { ip => 'sorryip', port => 'sorryport' },
-        qosup => '100M',
-        other_virtual_key => ' none none none none ',
-        checkcount => $main::CONFIG{checkcount},
-        checktimeout => $main::CONFIG{checktimeout},
-        negotiatetimeout => $main::CONFIG{negotiatetimeout},
-        checkinterval => $main::CONFIG{checkinterval},
-        retryinterval => $main::CONFIG{retryinterval},
-        quiescent => $main::CONFIG{quiescent},
-                                             } ];
-    ld_setup();
-    is_deeply \%main::CONFIG, \%expected, 'ld_setup - qosup setup ok';
-}
-{
-    set_default();
-    local @get_ip_port_args = ();
-    local @get_ip_port_returns = ('ip:port');
-    local @get_forward_flag_args = ();
-    local @get_forward_flag_returns = ();
-    my %expected = %main::GLOBAL;
-    $main::CONFIG{virtual} = [ undef, undef, {
-        option => { protocol => '-t' },
-        module => {
-            name => 'cinsert',
-            option => '--cookie-name cookie',
-        },
-        scheduler => 'rr',
-        maxconn => 1000,
-        sorryserver => { ip => 'sorryip', port => 'sorryport' },
-        qosup => '100M',
-        qosdown => '100K',
-                                             } ];
-    $expected{virtual}     = [ undef, undef, {
-        option => {
-            protocol => '-t',
-            main  => '-t ip:port -m cinsert --cookie-name cookie',
-            flags => '-t ip:port -m cinsert --cookie-name cookie -s rr -u 1000 -b sorryip:sorryport -Q 100M -q 100K',
-        },
-        module => {
-            name => 'cinsert',
-            option => '--cookie-name cookie',
-        },
-        scheduler => 'rr',
-        maxconn => 1000,
-        sorryserver => { ip => 'sorryip', port => 'sorryport' },
-        qosup => '100M',
-        qosdown => '100K',
-        other_virtual_key => ' none none none none ',
-        checkcount => $main::CONFIG{checkcount},
-        checktimeout => $main::CONFIG{checktimeout},
-        negotiatetimeout => $main::CONFIG{negotiatetimeout},
-        checkinterval => $main::CONFIG{checkinterval},
-        retryinterval => $main::CONFIG{retryinterval},
-        quiescent => $main::CONFIG{quiescent},
-                                             } ];
-    ld_setup();
-    is_deeply \%main::CONFIG, \%expected, 'ld_setup - qosdown setup ok';
-}
-{
-    set_default();
-    local @get_ip_port_args = ();
-    local @get_ip_port_returns = ('ip:port');
-    local @get_forward_flag_args = ();
-    local @get_forward_flag_returns = ();
-    my %expected = %main::GLOBAL;
-    $main::CONFIG{virtual} = [ undef, undef, {
-        option => { protocol => '-t' },
-        module => {
-            name => 'sessionless',
-        },
-        scheduler => 'rr',
-        maxconn => 1000,
-        sorryserver => { ip => 'sorryip', port => 'sorryport' },
-        qosup => '100M',
-        qosdown => '100K',
-                                             } ];
-    $expected{virtual}     = [ undef, undef, {
-        option => {
-            protocol => '-t',
-            main  => '-t ip:port -m sessionless',
-            flags => '-t ip:port -m sessionless -s rr -u 1000 -b sorryip:sorryport -Q 100M -q 100K',
-        },
-        module => {
-            name => 'sessionless',
-        },
-        scheduler => 'rr',
-        maxconn => 1000,
-        sorryserver => { ip => 'sorryip', port => 'sorryport' },
-        qosup => '100M',
-        qosdown => '100K',
-        other_virtual_key => ' none none none none ',
-        checkcount => $main::CONFIG{checkcount},
-        checktimeout => $main::CONFIG{checktimeout},
-        negotiatetimeout => $main::CONFIG{negotiatetimeout},
-        checkinterval => $main::CONFIG{checkinterval},
-        retryinterval => $main::CONFIG{retryinterval},
-        quiescent => $main::CONFIG{quiescent},
-                                             } ];
-    ld_setup();
-    is_deeply \%main::CONFIG, \%expected, 'ld_setup - sessionless setup ok';
-}
-########################################################################################################
-### sslconfigfile Check
-{
-    set_default();
-    local @get_ip_port_args = ();
-    local @get_ip_port_returns = ('ip:port');
-    local @get_forward_flag_args = ();
-    local @get_forward_flag_returns = ();
-    my %expected = %main::GLOBAL;
-    $main::CONFIG{virtual} = [ undef, undef, {
-        option => { protocol => '-t' },
-        module => {
-            name => 'ip',
-        },
-        scheduler => 'rr',
-        maxconn => 1000,
-        sorryserver => { ip => 'sorryip', port => 'sorryport' },
-        qosup => '100M',
-        qosdown => '100K',
-        sslconfigfile => '/etc/ha.d/conf/ssl_config.cf',
-        other_virtual_key => undef,
-                                             } ];
-    $expected{virtual}     = [ undef, undef, {
-        option => {
-            protocol => '-t',
-            main  => '-t ip:port -m ip',
-            flags => '-t ip:port -m ip -s rr -u 1000 -b sorryip:sorryport -Q 100M -q 100K -z /etc/ha.d/conf/ssl_config.cf',
-        },
-        module => {
-            name => 'ip',
-        },
-        scheduler => 'rr',
-        maxconn => 1000,
-        sorryserver => { ip => 'sorryip', port => 'sorryport' },
-        qosup => '100M',
-        qosdown => '100K',
-        sslconfigfile => '/etc/ha.d/conf/ssl_config.cf',
-        other_virtual_key => ' /etc/ha.d/conf/ssl_config.cf none none none ',
-        checkcount => $main::CONFIG{checkcount},
-        checktimeout => $main::CONFIG{checktimeout},
-        negotiatetimeout => $main::CONFIG{negotiatetimeout},
-        checkinterval => $main::CONFIG{checkinterval},
-        retryinterval => $main::CONFIG{retryinterval},
-        quiescent => $main::CONFIG{quiescent},
-                                             } ];
-    ld_setup();
-    is_deeply \%main::CONFIG, \%expected, 'ld_setup - ipmodule sslconfigfile ok';
-}
-########################################################################################################
-### socketoption Check(deferaccept,nodelay,cork,quickackon)
-{
-    set_default();
-    local @get_ip_port_args = ();
-    local @get_ip_port_returns = ('ip:port');
-    local @get_forward_flag_args = ();
-    local @get_forward_flag_returns = ();
-    my %expected = %main::GLOBAL;
-    $main::CONFIG{virtual} = [ undef, undef, {
-        option => { protocol => '-t' },
-        module => {
-            name => 'ip',
-        },
-        scheduler => 'rr',
-        maxconn => 1000,
-        sorryserver => { ip => 'sorryip', port => 'sorryport' },
-        qosup => '100M',
-        qosdown => '100K',
-        socketoption => 'deferaccept,nodelay,cork,quickackon',
-                                             } ];
-    $expected{virtual}     = [ undef, undef, {
-        option => {
-            protocol => '-t',
-            main  => '-t ip:port -m ip',
-            flags => '-t ip:port -m ip -s rr -u 1000 -b sorryip:sorryport -Q 100M -q 100K -O deferaccept,nodelay,cork,quickackon',
-        },
-        module => {
-            name => 'ip',
-        },
-        scheduler => 'rr',
-        maxconn => 1000,
-        sorryserver => { ip => 'sorryip', port => 'sorryport' },
-        qosup => '100M',
-        qosdown => '100K',
-        socketoption => 'deferaccept,nodelay,cork,quickackon',
-        other_virtual_key => ' none deferaccept,nodelay,cork,quickackon none none ',
-        checkcount => $main::CONFIG{checkcount},
-        checktimeout => $main::CONFIG{checktimeout},
-        negotiatetimeout => $main::CONFIG{negotiatetimeout},
-        checkinterval => $main::CONFIG{checkinterval},
-        retryinterval => $main::CONFIG{retryinterval},
-        quiescent => $main::CONFIG{quiescent},
-                                             } ];
-    ld_setup();
-    is_deeply \%main::CONFIG, \%expected, 'ld_setup - socketoption setup ok';
-}
-########################################################################################################
-### socketoption Check(deferaccept,nodelay,cork,quickackoff)
-{
-    set_default();
-    local @get_ip_port_args = ();
-    local @get_ip_port_returns = ('ip:port');
-    local @get_forward_flag_args = ();
-    local @get_forward_flag_returns = ();
-    my %expected = %main::GLOBAL;
-    $main::CONFIG{virtual} = [ undef, undef, {
-        option => { protocol => '-t' },
-        module => {
-            name => 'ip',
-        },
-        scheduler => 'rr',
-        maxconn => 1000,
-        sorryserver => { ip => 'sorryip', port => 'sorryport' },
-        qosup => '100M',
-        qosdown => '100K',
-        socketoption => 'deferaccept,nodelay,cork,quickackoff',
-        other_virtual_key => undef,
-                                             } ];
-    $expected{virtual}     = [ undef, undef, {
-        option => {
-            protocol => '-t',
-            main  => '-t ip:port -m ip',
-            flags => '-t ip:port -m ip -s rr -u 1000 -b sorryip:sorryport -Q 100M -q 100K -O deferaccept,nodelay,cork,quickackoff',
-        },
-        module => {
-            name => 'ip',
-        },
-        scheduler => 'rr',
-        maxconn => 1000,
-        sorryserver => { ip => 'sorryip', port => 'sorryport' },
-        qosup => '100M',
-        qosdown => '100K',
-        socketoption => 'deferaccept,nodelay,cork,quickackoff',
-        other_virtual_key => ' none deferaccept,nodelay,cork,quickackoff none none ',
-        checkcount => $main::CONFIG{checkcount},
-        checktimeout => $main::CONFIG{checktimeout},
-        negotiatetimeout => $main::CONFIG{negotiatetimeout},
-        checkinterval => $main::CONFIG{checkinterval},
-        retryinterval => $main::CONFIG{retryinterval},
-        quiescent => $main::CONFIG{quiescent},
-                                             } ];
-    ld_setup();
-    is_deeply \%main::CONFIG, \%expected, 'ld_setup - socketoption setup ok';
-}
-########################################################################################################
-### accesslog Check( = 0 )
-{
-    set_default();
-    local @get_ip_port_args = ();
-    local @get_ip_port_returns = ('ip:port');
-    local @get_forward_flag_args = ();
-    local @get_forward_flag_returns = ();
-    my %expected = %main::GLOBAL;
-    $main::CONFIG{virtual} = [ undef, undef, {
-        option => { protocol => '-t' },
-        module => {
-            name => 'ip',
-        },
-        scheduler => 'rr',
-        maxconn => 1000,
-        sorryserver => { ip => 'sorryip', port => 'sorryport' },
-        qosup => '100M',
-        qosdown => '100K',
-        socketoption => 'deferaccept,nodelay,cork,quickackoff',
-        other_virtual_key => undef,
-        accesslog => 0,
-        accesslogfile => '/tmp/work.log',
-        accesslog_rotate_type => 'datesize',
-        accesslog_rotate_max_backup_index => '12',
-        accesslog_rotate_max_filesize => '29G',
-        accesslog_rotate_rotation_timing => 'week',
-        accesslog_rotate_rotation_timing_value => 'sun 23:59',
-                                             } ];
-    $expected{virtual}     = [ undef, undef, {
-        option => {
-            protocol => '-t',
-            main  => '-t ip:port -m ip',
-            flags => '-t ip:port -m ip -s rr -u 1000 -b sorryip:sorryport -Q 100M -q 100K -O deferaccept,nodelay,cork,quickackoff -L 0 -a /tmp/work.log --ac-rotate-type datesize --ac-rotate-max-backup-index 12 --ac-rotate-max-filesize 29G --ac-rotate-rotation-timing week --ac-rotate-rotation-timing-value sun 23:59',
-        },
-        module => {
-            name => 'ip',
-        },
-        scheduler => 'rr',
-        maxconn => 1000,
-        sorryserver => { ip => 'sorryip', port => 'sorryport' },
-        qosup => '100M',
-        qosdown => '100K',
-        socketoption => 'deferaccept,nodelay,cork,quickackoff',
-        other_virtual_key => ' none deferaccept,nodelay,cork,quickackoff /tmp/work.log --ac-rotate-type datesize --ac-rotate-max-backup-index 12 --ac-rotate-max-filesize 29G --ac-rotate-rotation-timing week --ac-rotate-rotation-timing-value sun 23:59',
-        accesslog => 0,
-        accesslogfile => '/tmp/work.log',
-        accesslog_rotate_type => 'datesize',
-        accesslog_rotate_max_backup_index => '12',
-        accesslog_rotate_max_filesize => '29G',
-        accesslog_rotate_rotation_timing => 'week',
-        accesslog_rotate_rotation_timing_value => 'sun 23:59',
-        checkcount => $main::CONFIG{checkcount},
-        checktimeout => $main::CONFIG{checktimeout},
-        negotiatetimeout => $main::CONFIG{negotiatetimeout},
-        checkinterval => $main::CONFIG{checkinterval},
-        retryinterval => $main::CONFIG{retryinterval},
-        quiescent => $main::CONFIG{quiescent},
-                                             } ];
-    ld_setup();
-    is_deeply \%main::CONFIG, \%expected, 'ld_setup - accesslog setup ok';
-}
-########################################################################################################
-### accesslog Check( = 1 )
-###     accesslog => '1',
-###     accesslog_rotate_type => 'datesize',
-###     accesslog_rotate_max_backup_index => '12',
-###     accesslog_rotate_max_filesize => '29G',
-###     accesslog_rotate_rotation_timing => 'week',
-###     accesslog_rotate_rotation_timing_value => 'sun 23:59'
-###     
-{
-    set_default();
-    local @get_ip_port_args = ();
-    local @get_ip_port_returns = ('ip:port');
-    local @get_forward_flag_args = ();
-    local @get_forward_flag_returns = ();
-    my %expected = %main::GLOBAL;
-    $main::CONFIG{virtual} = [ undef, undef, {
-        option => { protocol => '-t' },
-        module => {
-            name => 'ip',
-        },
-        scheduler => 'rr',
-        maxconn => 1000,
-        sorryserver => { ip => 'sorryip', port => 'sorryport' },
-        qosup => '100M',
-        qosdown => '100K',
-        accesslog => 1,
-        accesslogfile => '/tmp/work.log',
-        accesslog_rotate_type => 'datesize',
-        accesslog_rotate_max_backup_index => '12',
-        accesslog_rotate_max_filesize => '29G',
-        accesslog_rotate_rotation_timing => 'week',
-        accesslog_rotate_rotation_timing_value => 'sun 23:59',
-        other_virtual_key => undef,
-                                             } ];
-
-    $expected{virtual}     = [ undef, undef, {
-        option => {
-            protocol => '-t',
-            main  => '-t ip:port -m ip',
-            flags => '-t ip:port -m ip -s rr -u 1000 -b sorryip:sorryport -Q 100M -q 100K -L 1 -a /tmp/work.log --ac-rotate-type datesize --ac-rotate-max-backup-index 12 --ac-rotate-max-filesize 29G --ac-rotate-rotation-timing week --ac-rotate-rotation-timing-value sun 23:59',
-        },
-        module => {
-            name => 'ip',
-        },
-        scheduler => 'rr',
-        maxconn => 1000,
-        sorryserver => { ip => 'sorryip', port => 'sorryport' },
-        qosup => '100M',
-        qosdown => '100K',
-        accesslog => '1',
-        accesslogfile => '/tmp/work.log',
-        accesslog_rotate_type => 'datesize',
-        accesslog_rotate_max_backup_index => '12',
-        accesslog_rotate_max_filesize => '29G',
-        accesslog_rotate_rotation_timing => 'week',
-        accesslog_rotate_rotation_timing_value => 'sun 23:59',
-        other_virtual_key => ' none none /tmp/work.log --ac-rotate-type datesize --ac-rotate-max-backup-index 12 --ac-rotate-max-filesize 29G --ac-rotate-rotation-timing week --ac-rotate-rotation-timing-value sun 23:59',
-        checkcount => $main::CONFIG{checkcount},
-        checktimeout => $main::CONFIG{checktimeout},
-        negotiatetimeout => $main::CONFIG{negotiatetimeout},
-        checkinterval => $main::CONFIG{checkinterval},
-        retryinterval => $main::CONFIG{retryinterval},
-        quiescent => $main::CONFIG{quiescent},
-                                             } ];
-    ld_setup();
-    is_deeply \%main::CONFIG, \%expected, 'ld_setup - accesslog setup ok';
-}
-########################################################################################################
-########################################################################################################
-### accesslog Check( = 1 )
-###     accesslog => '1',
-###     accesslog_rotate_type => 'date',
-###     accesslog_rotate_max_backup_index => '2',
-###     accesslog_rotate_rotation_timing => 'week',
-###     accesslog_rotate_rotation_timing_value => 'sun 23:59'
-###     
-{
-    set_default();
-    local @get_ip_port_args = ();
-    local @get_ip_port_returns = ('ip:port');
-    local @get_forward_flag_args = ();
-    local @get_forward_flag_returns = ();
-    my %expected = %main::GLOBAL;
-    $main::CONFIG{virtual} = [ undef, undef, {
-        option => { protocol => '-t' },
-        module => {
-            name => 'ip',
-        },
-        scheduler => 'rr',
-        maxconn => 1000,
-        sorryserver => { ip => 'sorryip', port => 'sorryport' },
-        qosup => '100M',
-        qosdown => '100K',
-        accesslog => '1',
-        accesslogfile => '/tmp/work.log',
-        accesslog_rotate_type => 'date',
-        accesslog_rotate_max_backup_index => '2',
-        accesslog_rotate_rotation_timing => 'year',
-        accesslog_rotate_rotation_timing_value => '12/31 23:59',
-        other_virtual_key => undef,
-                                             } ];
-    $expected{virtual}     = [ undef, undef, {
-        option => {
-            protocol => '-t',
-            main  => '-t ip:port -m ip',
-            flags => '-t ip:port -m ip -s rr -u 1000 -b sorryip:sorryport -Q 100M -q 100K -L 1 -a /tmp/work.log --ac-rotate-type date --ac-rotate-max-backup-index 2 --ac-rotate-rotation-timing year --ac-rotate-rotation-timing-value 12/31 23:59',
-        },
-        module => {
-            name => 'ip',
-        },
-        scheduler => 'rr',
-        maxconn => 1000,
-        sorryserver => { ip => 'sorryip', port => 'sorryport' },
-        qosup => '100M',
-        qosdown => '100K',
-        accesslog => '1',
-        accesslogfile => '/tmp/work.log',
-        accesslog_rotate_type => 'date',
-        accesslog_rotate_max_backup_index => '2',
-        accesslog_rotate_rotation_timing => 'year',
-        accesslog_rotate_rotation_timing_value => '12/31 23:59',
-        other_virtual_key => ' none none /tmp/work.log --ac-rotate-type date --ac-rotate-max-backup-index 2 --ac-rotate-rotation-timing year --ac-rotate-rotation-timing-value 12/31 23:59',
-        checkcount => $main::CONFIG{checkcount},
-        checktimeout => $main::CONFIG{checktimeout},
-        negotiatetimeout => $main::CONFIG{negotiatetimeout},
-        checkinterval => $main::CONFIG{checkinterval},
-        retryinterval => $main::CONFIG{retryinterval},
-        quiescent => $main::CONFIG{quiescent},
-                                             } ];
-    ld_setup();
-    is_deeply \%main::CONFIG, \%expected, 'ld_setup - accesslog setup ok';
-}
-########################################################################################################
-
-{
-    set_default();
-    local @get_ip_port_args = ();
-    local @get_ip_port_returns = ('fbip1', 'fbip1');
-    local @get_forward_flag_args = ();
-    local @get_forward_flag_returns = ();
-    my %expected = %main::GLOBAL;
-    $main::CONFIG{virtual} = [ undef, undef, {
-                                             } ];
-    $main::CONFIG{fallback} = { tcp => { server => 'fallback'} };
-    $expected{virtual}     = [ undef, undef, {
-        fallback => { tcp => { server => 'fallback', option => { flags => '-r fbip1' } } },
-        checkcount => $main::CONFIG{checkcount},
-        checktimeout => $main::CONFIG{checktimeout},
-        negotiatetimeout => $main::CONFIG{negotiatetimeout},
-        checkinterval => $main::CONFIG{checkinterval},
-        retryinterval => $main::CONFIG{retryinterval},
-        quiescent => $main::CONFIG{quiescent},
-                               } ];
-    $expected{fallback} = { tcp => { server => 'fallback',
-                                     option => { flags => '-r fbip1' } }
-                          };
-    ld_setup();
-    is_deeply \%main::CONFIG, \%expected, 'ld_setup - fallback overwrite ok';
-}
-{
-    set_default();
-    local @get_ip_port_args = ();
-    local @get_ip_port_returns = ('fbip1');
-    local @get_forward_flag_args = ();
-    local @get_forward_flag_returns = ();
-    my %expected = %main::GLOBAL;
-    $main::CONFIG{virtual} = [ undef, undef, {
-        fallback => { tcp => { server => 'fallback' } },
-                                             } ];
-    $expected{virtual}     = [ undef, undef, {
-        fallback => { tcp => { server => 'fallback', option => { flags => '-r fbip1' } } },
-        checkcount => $main::CONFIG{checkcount},
-        checktimeout => $main::CONFIG{checktimeout},
-        negotiatetimeout => $main::CONFIG{negotiatetimeout},
-        checkinterval => $main::CONFIG{checkinterval},
-        retryinterval => $main::CONFIG{retryinterval},
-        quiescent => $main::CONFIG{quiescent},
-                               } ];
-    ld_setup();
-    is_deeply \%main::CONFIG, \%expected, 'ld_setup - fallback ok';
-}
-{
-    set_default();
-    local @get_ip_port_args = ();
-    local @get_ip_port_returns = ();
-    local @get_forward_flag_args = ();
-    local @get_forward_flag_returns = ();
-    my %expected = %main::GLOBAL;
-    $main::CONFIG{virtual} = [ undef, undef, {
-        checktype => 1,
-                                             } ];
-    $expected{virtual}     = [ undef, undef, {
-        checktype => 'combined',
-        num_connects => 1,
-        checkcount => $main::CONFIG{checkcount},
-        checktimeout => $main::CONFIG{checktimeout},
-        negotiatetimeout => $main::CONFIG{negotiatetimeout},
-        checkinterval => $main::CONFIG{checkinterval},
-        retryinterval => $main::CONFIG{retryinterval},
-        quiescent => $main::CONFIG{quiescent},
-                               } ];
-    ld_setup();
-    is_deeply \%main::CONFIG, \%expected, 'ld_setup - checktype ok';
-}
-{
-    set_default();
-    local @get_ip_port_args = ();
-    local @get_ip_port_returns = ();
-    local @get_forward_flag_args = ();
-    local @get_forward_flag_returns = ();
-    my %expected = %main::GLOBAL;
-    $main::CONFIG{virtual} = [ undef, undef, {
-        login => '',
-        service => 'ftp',
-                                             } ];
-    $expected{virtual}     = [ undef, undef, {
-        login => 'anonymous',
-        service => 'ftp',
-        checkcount => $main::CONFIG{checkcount},
-        checktimeout => $main::CONFIG{checktimeout},
-        negotiatetimeout => $main::CONFIG{negotiatetimeout},
-        checkinterval => $main::CONFIG{checkinterval},
-        retryinterval => $main::CONFIG{retryinterval},
-        quiescent => $main::CONFIG{quiescent},
-                               } ];
-    ld_setup();
-    is_deeply \%main::CONFIG, \%expected, 'ld_setup - login ftp ok';
-}
-{
-    set_default();
-    local @get_ip_port_args = ();
-    local @get_ip_port_returns = ();
-    local @get_forward_flag_args = ();
-    local @get_forward_flag_returns = ();
-    my %expected = %main::GLOBAL;
-    $main::CONFIG{virtual} = [ undef, undef, {
-        login => '',
-        service => 'sip',
-                                             } ];
-    $expected{virtual}     = [ undef, undef, {
-        login => 'l7directord@' . $main::PROC_ENV{hostname},
-        service => 'sip',
-        checkcount => $main::CONFIG{checkcount},
-        checktimeout => $main::CONFIG{checktimeout},
-        negotiatetimeout => $main::CONFIG{negotiatetimeout},
-        checkinterval => $main::CONFIG{checkinterval},
-        retryinterval => $main::CONFIG{retryinterval},
-        quiescent => $main::CONFIG{quiescent},
-                               } ];
-    ld_setup();
-    is_deeply \%main::CONFIG, \%expected, 'ld_setup - login sip ok';
-}
-{
-    set_default();
-    local @get_ip_port_args = ();
-    local @get_ip_port_returns = ();
-    local @get_forward_flag_args = ();
-    local @get_forward_flag_returns = ();
-    my %expected = %main::GLOBAL;
-    $main::CONFIG{virtual} = [ undef, undef, {
-        passwd => '',
-        service => 'ftp',
-                                             } ];
-    $expected{virtual}     = [ undef, undef, {
-        passwd => 'l7directord@' . $main::PROC_ENV{hostname},
-        service => 'ftp',
-        checkcount => $main::CONFIG{checkcount},
-        checktimeout => $main::CONFIG{checktimeout},
-        negotiatetimeout => $main::CONFIG{negotiatetimeout},
-        checkinterval => $main::CONFIG{checkinterval},
-        retryinterval => $main::CONFIG{retryinterval},
-        quiescent => $main::CONFIG{quiescent},
-                               } ];
-    ld_setup();
-    is_deeply \%main::CONFIG, \%expected, 'ld_setup - passwd ftp ok';
-}
-{
-    set_default();
-    local @get_ip_port_args = ();
-    local @get_ip_port_returns = ();
-    local @get_forward_flag_args = ();
-    local @get_forward_flag_returns = ();
-    my %expected = %main::GLOBAL;
-    $main::CONFIG{virtual} = [ undef, undef, {
-        real => [ undef, undef, undef ],
-                                             } ];
-    $expected{virtual}     = [ undef, undef, {
-        real => [ undef, undef, undef ],
-        checkcount => $main::CONFIG{checkcount},
-        checktimeout => $main::CONFIG{checktimeout},
-        negotiatetimeout => $main::CONFIG{negotiatetimeout},
-        checkinterval => $main::CONFIG{checkinterval},
-        retryinterval => $main::CONFIG{retryinterval},
-        quiescent => $main::CONFIG{quiescent},
-                               } ];
-    ld_setup();
-    is_deeply \%main::CONFIG, \%expected, 'ld_setup - real undef list ok';
-}
-{
-    set_default();
-    local @get_ip_port_args = ();
-    local @get_ip_port_returns = ('real');
-    local @get_forward_flag_args = ();
-    local @get_forward_flag_returns = ('-m');
-    my %expected = %main::GLOBAL;
-    $main::CONFIG{virtual} = [ undef, undef, {
-        real => [ undef, undef, {
-            forward => 'forward',
-              } ],
-                                             } ];
-    $expected{virtual}     = [ undef, undef, {
-        real => [ undef, undef, {
-            forward => 'forward',
-            option => { forward => '-m', flags => '-r real' },
-            weight => 1,
-            fail_counts => 0,
-            healthchecked => 0,
-            server => { port => undef },
-              } ],
-        server => {},
-        checkcount => $main::CONFIG{checkcount},
-        checktimeout => $main::CONFIG{checktimeout},
-        negotiatetimeout => $main::CONFIG{negotiatetimeout},
-        checkinterval => $main::CONFIG{checkinterval},
-        retryinterval => $main::CONFIG{retryinterval},
-        quiescent => $main::CONFIG{quiescent},
-                               } ];
-    ld_setup();
-    is_deeply \%main::CONFIG, \%expected, 'ld_setup - real forward, weight ok';
-}
-{
-    set_default();
-    local @get_ip_port_args = ();
-    local @get_ip_port_returns = ('real');
-    local @get_forward_flag_args = ();
-    local @get_forward_flag_returns = ('-m');
-    my %expected = %main::GLOBAL;
-    $main::CONFIG{virtual} = [ undef, undef, {
-        real => [ undef, undef, {
-            weight => 'foo',
-              } ],
-                                             } ];
-    $expected{virtual}     = [ undef, undef, {
-        real => [ undef, undef, {
-            option => { flags => '-r real' },
-            weight => 1,
-            fail_counts => 0,
-            healthchecked => 0,
-            server => { port => undef },
-              } ],
-        server => {},
-        checkcount => $main::CONFIG{checkcount},
-        checktimeout => $main::CONFIG{checktimeout},
-        negotiatetimeout => $main::CONFIG{negotiatetimeout},
-        checkinterval => $main::CONFIG{checkinterval},
-        retryinterval => $main::CONFIG{retryinterval},
-        quiescent => $main::CONFIG{quiescent},
-                               } ];
-    ld_setup();
-    is_deeply \%main::CONFIG, \%expected, 'ld_setup - real invalid weight ok';
-}
-{
-    set_default();
-    local @get_ip_port_args = ();
-    local @get_ip_port_returns = ('real');
-    local @get_forward_flag_args = ();
-    local @get_forward_flag_returns = ('-m');
-    my %expected = %main::GLOBAL;
-    $main::CONFIG{virtual} = [ undef, undef, {
-        real => [ undef, undef, {
-            weight => 10,
-              } ],
-                                             } ];
-    $expected{virtual}     = [ undef, undef, {
-        real => [ undef, undef, {
-            option => { flags => '-r real' },
-            weight => 10,
-            fail_counts => 0,
-            healthchecked => 0,
-            server => { port => undef },
-              } ],
-        server => {},
-        checkcount => $main::CONFIG{checkcount},
-        checktimeout => $main::CONFIG{checktimeout},
-        negotiatetimeout => $main::CONFIG{negotiatetimeout},
-        checkinterval => $main::CONFIG{checkinterval},
-        retryinterval => $main::CONFIG{retryinterval},
-        quiescent => $main::CONFIG{quiescent},
-                               } ];
-    ld_setup();
-    is_deeply \%main::CONFIG, \%expected, 'ld_setup - real valid weight ok';
-}
-{
-    set_default();
-    local @get_ip_port_args = ();
-    local @get_ip_port_returns = ('real');
-    local @get_forward_flag_args = ();
-    local @get_forward_flag_returns = ('-m');
-    my %expected = %main::GLOBAL;
-    $main::CONFIG{virtual} = [ undef, undef, {
-        real => [ undef, undef, {
-            server => { ip => 'r', port => 'p' },
-              } ],
-        service => 'http',
-                                             } ];
-    $expected{virtual}     = [ undef, undef, {
-        real => [ undef, undef, {
-            server => { ip => 'r', port => 'p' },
-            option => { flags => '-r real' },
-            weight => 1,
-            fail_counts => 0,
-            healthchecked => 0,
-            url => 'http://r:p/',
-              } ],
-        service => 'http',
-        checkcount => $main::CONFIG{checkcount},
-        checktimeout => $main::CONFIG{checktimeout},
-        negotiatetimeout => $main::CONFIG{negotiatetimeout},
-        checkinterval => $main::CONFIG{checkinterval},
-        retryinterval => $main::CONFIG{retryinterval},
-        quiescent => $main::CONFIG{quiescent},
-                               } ];
-    ld_setup();
-    is_deeply \%main::CONFIG, \%expected, 'ld_setup - real url ip, port ok';
-}
-{
-    set_default();
-    local @get_ip_port_args = ();
-    local @get_ip_port_returns = ('real');
-    local @get_forward_flag_args = ();
-    local @get_forward_flag_returns = ('-m');
-    my %expected = %main::GLOBAL;
-    $main::CONFIG{virtual} = [ undef, undef, {
-        real => [ undef, undef, {
-            server => { ip => 'r', port => 'p' },
-              } ],
-        service => 'http',
-        checkport => '10000',
-                                             } ];
-    $expected{virtual}     = [ undef, undef, {
-        real => [ undef, undef, {
-            server => { ip => 'r', port => 'p' },
-            option => { flags => '-r real' },
-            weight => 1,
-            fail_counts => 0,
-            healthchecked => 0,
-            url => 'http://r:10000/',
-              } ],
-        service => 'http',
-        checkport => '10000',
-        checkcount => $main::CONFIG{checkcount},
-        checktimeout => $main::CONFIG{checktimeout},
-        negotiatetimeout => $main::CONFIG{negotiatetimeout},
-        checkinterval => $main::CONFIG{checkinterval},
-        retryinterval => $main::CONFIG{retryinterval},
-        quiescent => $main::CONFIG{quiescent},
-                               } ];
-    ld_setup();
-    is_deeply \%main::CONFIG, \%expected, 'ld_setup - real url checkport ok';
-}
-{
-    set_default();
-    local @get_ip_port_args = ();
-    local @get_ip_port_returns = ('real');
-    local @get_forward_flag_args = ();
-    local @get_forward_flag_returns = ('-m');
-    my %expected = %main::GLOBAL;
-    $main::CONFIG{virtual} = [ undef, undef, {
-        real => [ undef, undef, {
-            server => { ip => 'r' },
-              } ],
-        service => 'http',
-        server => { port => 'v' },
-                                             } ];
-    $expected{virtual}     = [ undef, undef, {
-        real => [ undef, undef, {
-            server => { ip => 'r', port => 'v' },
-            option => { flags => '-r real' },
-            weight => 1,
-            fail_counts => 0,
-            healthchecked => 0,
-            url => 'http://r:v/',
-              } ],
-        server => { port => 'v' },
-        service => 'http',
-        checkcount => $main::CONFIG{checkcount},
-        checktimeout => $main::CONFIG{checktimeout},
-        negotiatetimeout => $main::CONFIG{negotiatetimeout},
-        checkinterval => $main::CONFIG{checkinterval},
-        retryinterval => $main::CONFIG{retryinterval},
-        quiescent => $main::CONFIG{quiescent},
-                               } ];
-    ld_setup();
-    is_deeply \%main::CONFIG, \%expected, 'ld_setup - real url default port ok';
-}
-{
-    set_default();
-    local @get_ip_port_args = ();
-    local @get_ip_port_returns = ('real');
-    local @get_forward_flag_args = ();
-    local @get_forward_flag_returns = ('-m');
-    my %expected = %main::GLOBAL;
-    $main::CONFIG{virtual} = [ undef, undef, {
-        real => [ undef, undef, {
-            request => 'r',
-              } ],
-                                             } ];
-    $expected{virtual}     = [ undef, undef, {
-        real => [ undef, undef, {
-            option => { flags => '-r real' },
-            request => 'r',
-            weight => 1,
-            fail_counts => 0,
-            healthchecked => 0,
-            url => 'r',
-            server => { port => undef },
-              } ],
-        server => {},
-        checkcount => $main::CONFIG{checkcount},
-        checktimeout => $main::CONFIG{checktimeout},
-        negotiatetimeout => $main::CONFIG{negotiatetimeout},
-        checkinterval => $main::CONFIG{checkinterval},
-        retryinterval => $main::CONFIG{retryinterval},
-        quiescent => $main::CONFIG{quiescent},
-                               } ];
-    ld_setup();
-    is_deeply \%main::CONFIG, \%expected, 'ld_setup - real valid request ok';
-}
-{
-    set_default();
-    local @get_ip_port_args = ();
-    local @get_ip_port_returns = ('real');
-    local @get_forward_flag_args = ();
-    local @get_forward_flag_returns = ('-m');
-    my %expected = %main::GLOBAL;
-    $main::CONFIG{virtual} = [ undef, undef, {
-        real => [ undef, undef, {
-              } ],
-        request => 'r',
-                                             } ];
-    $expected{virtual}     = [ undef, undef, {
-        real => [ undef, undef, {
-            option => { flags => '-r real' },
-            request => 'r',
-            weight => 1,
-            fail_counts => 0,
-            healthchecked => 0,
-            url => 'r',
-            server => { port => undef },
-              } ],
-        server => {},
-        request => 'r',
-        checkcount => $main::CONFIG{checkcount},
-        checktimeout => $main::CONFIG{checktimeout},
-        negotiatetimeout => $main::CONFIG{negotiatetimeout},
-        checkinterval => $main::CONFIG{checkinterval},
-        retryinterval => $main::CONFIG{retryinterval},
-        quiescent => $main::CONFIG{quiescent},
-                               } ];
-    ld_setup();
-    is_deeply \%main::CONFIG, \%expected, 'ld_setup - real request overwrite ok';
-}
-{
-    set_default();
-    local @get_ip_port_args = ();
-    local @get_ip_port_returns = ('real');
-    local @get_forward_flag_args = ();
-    local @get_forward_flag_returns = ('-m');
-    my %expected = %main::GLOBAL;
-    $main::CONFIG{virtual} = [ undef, undef, {
-        real => [ undef, undef, {
-            server => { ip => 'r' },
-              } ],
-        request => 'ftp://foo',
-        service => 'ftp',
-        server => { port => 'v' },
-                                             } ];
-    $expected{virtual}     = [ undef, undef, {
-        real => [ undef, undef, {
-            option => { flags => '-r real' },
-            request => 'ftp://foo',
-            weight => 1,
-            fail_counts => 0,
-            healthchecked => 0,
-            url => 'ftp://foo',
-            server => { ip => 'r', port => 'v' },
-              } ],
-        server => { port => 'v' },
-        request => 'ftp://foo',
-        service => 'ftp',
-        checkcount => $main::CONFIG{checkcount},
-        checktimeout => $main::CONFIG{checktimeout},
-        negotiatetimeout => $main::CONFIG{negotiatetimeout},
-        checkinterval => $main::CONFIG{checkinterval},
-        retryinterval => $main::CONFIG{retryinterval},
-        quiescent => $main::CONFIG{quiescent},
-                               } ];
-    ld_setup();
-    is_deeply \%main::CONFIG, \%expected, 'ld_setup - real request set to url ok';
-}
-{
-    set_default();
-    local @get_ip_port_args = ();
-    local @get_ip_port_returns = ('real');
-    local @get_forward_flag_args = ();
-    local @get_forward_flag_returns = ('-m');
-    my %expected = %main::GLOBAL;
-    $main::CONFIG{virtual} = [ undef, undef, {
-        real => [ undef, undef, {
-              } ],
-        checktype => 3,
-                                             } ];
-    $expected{virtual}     = [ undef, undef, {
-        real => [ undef, undef, {
-            option => { flags => '-r real' },
-            weight => 1,
-            fail_counts => 0,
-            healthchecked => 0,
-            num_connects => undef,
-            server => { port => undef },
-              } ],
-        server => {},
-        checktype => 'combined',
-        num_connects => 3,
-        checkcount => $main::CONFIG{checkcount},
-        checktimeout => $main::CONFIG{checktimeout},
-        negotiatetimeout => $main::CONFIG{negotiatetimeout},
-        checkinterval => $main::CONFIG{checkinterval},
-        retryinterval => $main::CONFIG{retryinterval},
-        quiescent => $main::CONFIG{quiescent},
-                               } ];
-    ld_setup();
-    is_deeply \%main::CONFIG, \%expected, 'ld_setup - real combined ok';
-}
-{
-    set_default();
-    local @get_ip_port_args = ();
-    local @get_ip_port_returns = ('real');
-    local @get_forward_flag_args = ();
-    local @get_forward_flag_returns = ('-m');
-    my %expected = %main::GLOBAL;
-    $main::CONFIG{virtual} = [ undef, undef, {
-        checkcount => 100,
-                                             } ];
-    $expected{virtual}     = [ undef, undef, {
-        checkcount => 100,
-        checktimeout => $main::CONFIG{checktimeout},
-        negotiatetimeout => $main::CONFIG{negotiatetimeout},
-        checkinterval => $main::CONFIG{checkinterval},
-        retryinterval => $main::CONFIG{retryinterval},
-        quiescent => $main::CONFIG{quiescent},
-                               } ];
-    ld_setup();
-    is_deeply \%main::CONFIG, \%expected, 'ld_setup - valid checkcount ok';
-}
-{
-    set_default();
-    local @get_ip_port_args = ();
-    local @get_ip_port_returns = ('real');
-    local @get_forward_flag_args = ();
-    local @get_forward_flag_returns = ('-m');
-    my %expected = %main::GLOBAL;
-    $main::CONFIG{virtual} = [ undef, undef, {
-        checkcount => -100,
-                                             } ];
-    $expected{virtual}     = [ undef, undef, {
-        checkcount => $main::CONFIG{checkcount},
-        checktimeout => $main::CONFIG{checktimeout},
-        negotiatetimeout => $main::CONFIG{negotiatetimeout},
-        checkinterval => $main::CONFIG{checkinterval},
-        retryinterval => $main::CONFIG{retryinterval},
-        quiescent => $main::CONFIG{quiescent},
-                               } ];
-    ld_setup();
-    is_deeply \%main::CONFIG, \%expected, 'ld_setup - invalid checkcount ok';
-}
-{
-    set_default();
-    local @get_ip_port_args = ();
-    local @get_ip_port_returns = ('real');
-    local @get_forward_flag_args = ();
-    local @get_forward_flag_returns = ('-m');
-    my %expected = %main::GLOBAL;
-    $main::CONFIG{virtual} = [ undef, undef, {
-        checktimeout => 100,
-                                             } ];
-    $expected{virtual}     = [ undef, undef, {
-        checkcount => $main::CONFIG{checkcount},
-        checktimeout => 100,
-        negotiatetimeout => $main::CONFIG{negotiatetimeout},
-        checkinterval => $main::CONFIG{checkinterval},
-        retryinterval => $main::CONFIG{retryinterval},
-        quiescent => $main::CONFIG{quiescent},
-                               } ];
-    ld_setup();
-    is_deeply \%main::CONFIG, \%expected, 'ld_setup - valid checktimeout ok';
-}
-{
-    set_default();
-    local @get_ip_port_args = ();
-    local @get_ip_port_returns = ('real');
-    local @get_forward_flag_args = ();
-    local @get_forward_flag_returns = ('-m');
-    my %expected = %main::GLOBAL;
-    $main::CONFIG{virtual} = [ undef, undef, {
-        checktimeout => -100,
-                                             } ];
-    $expected{virtual}     = [ undef, undef, {
-        checkcount => $main::CONFIG{checkcount},
-        checktimeout => $main::CONFIG{checktimeout},
-        negotiatetimeout => $main::CONFIG{negotiatetimeout},
-        checkinterval => $main::CONFIG{checkinterval},
-        retryinterval => $main::CONFIG{retryinterval},
-        quiescent => $main::CONFIG{quiescent},
-                               } ];
-    ld_setup();
-    is_deeply \%main::CONFIG, \%expected, 'ld_setup - invalid checktimeout ok';
-}
-{
-    set_default();
-    local @get_ip_port_args = ();
-    local @get_ip_port_returns = ('real');
-    local @get_forward_flag_args = ();
-    local @get_forward_flag_returns = ('-m');
-    my %expected = %main::GLOBAL;
-    $main::CONFIG{virtual} = [ undef, undef, {
-        negotiatetimeout => 100,
-                                             } ];
-    $expected{virtual}     = [ undef, undef, {
-        checkcount => $main::CONFIG{checkcount},
-        checktimeout => $main::CONFIG{checktimeout},
-        negotiatetimeout => 100,
-        checkinterval => $main::CONFIG{checkinterval},
-        retryinterval => $main::CONFIG{retryinterval},
-        quiescent => $main::CONFIG{quiescent},
-                               } ];
-    ld_setup();
-    is_deeply \%main::CONFIG, \%expected, 'ld_setup - valid negotiatetimeout ok';
-}
-{
-    set_default();
-    local @get_ip_port_args = ();
-    local @get_ip_port_returns = ('real');
-    local @get_forward_flag_args = ();
-    local @get_forward_flag_returns = ('-m');
-    my %expected = %main::GLOBAL;
-    $main::CONFIG{virtual} = [ undef, undef, {
-        negotiatetimeout => -100,
-                                             } ];
-    $expected{virtual}     = [ undef, undef, {
-        checkcount => $main::CONFIG{checkcount},
-        checktimeout => $main::CONFIG{checktimeout},
-        negotiatetimeout => $main::CONFIG{negotiatetimeout},
-        checkinterval => $main::CONFIG{checkinterval},
-        retryinterval => $main::CONFIG{retryinterval},
-        quiescent => $main::CONFIG{quiescent},
-                               } ];
-    ld_setup();
-    is_deeply \%main::CONFIG, \%expected, 'ld_setup - invalid negotiatetimeout ok';
-}
-{
-    set_default();
-    local @get_ip_port_args = ();
-    local @get_ip_port_returns = ('real');
-    local @get_forward_flag_args = ();
-    local @get_forward_flag_returns = ('-m');
-    my %expected = %main::GLOBAL;
-    $main::CONFIG{virtual} = [ undef, undef, {
-        checkinterval => 100,
-                                             } ];
-    $expected{virtual}     = [ undef, undef, {
-        checkcount => $main::CONFIG{checkcount},
-        checktimeout => $main::CONFIG{checktimeout},
-        negotiatetimeout => $main::CONFIG{negotiatetimeout},
-        checkinterval => 100,
-        retryinterval => $main::CONFIG{retryinterval},
-        quiescent => $main::CONFIG{quiescent},
-                               } ];
-    ld_setup();
-    is_deeply \%main::CONFIG, \%expected, 'ld_setup - valid checkinterval ok';
-}
-{
-    set_default();
-    local @get_ip_port_args = ();
-    local @get_ip_port_returns = ('real');
-    local @get_forward_flag_args = ();
-    local @get_forward_flag_returns = ('-m');
-    my %expected = %main::GLOBAL;
-    $main::CONFIG{virtual} = [ undef, undef, {
-        checkinterval => -100,
-                                             } ];
-    $expected{virtual}     = [ undef, undef, {
-        checkcount => $main::CONFIG{checkcount},
-        checktimeout => $main::CONFIG{checktimeout},
-        negotiatetimeout => $main::CONFIG{negotiatetimeout},
-        checkinterval => $main::CONFIG{checkinterval},
-        retryinterval => $main::CONFIG{retryinterval},
-        quiescent => $main::CONFIG{quiescent},
-                               } ];
-    ld_setup();
-    is_deeply \%main::CONFIG, \%expected, 'ld_setup - invalid checkinterval ok';
-}
-{
-    set_default();
-    local @get_ip_port_args = ();
-    local @get_ip_port_returns = ('real');
-    local @get_forward_flag_args = ();
-    local @get_forward_flag_returns = ('-m');
-    my %expected = %main::GLOBAL;
-    $main::CONFIG{virtual} = [ undef, undef, {
-        retryinterval => 100,
-                                             } ];
-    $expected{virtual}     = [ undef, undef, {
-        checkcount => $main::CONFIG{checkcount},
-        checktimeout => $main::CONFIG{checktimeout},
-        negotiatetimeout => $main::CONFIG{negotiatetimeout},
-        checkinterval => $main::CONFIG{checkinterval},
-        retryinterval => 100,
-        quiescent => $main::CONFIG{quiescent},
-                               } ];
-    ld_setup();
-    is_deeply \%main::CONFIG, \%expected, 'ld_setup - valid retryinterval ok';
-}
-{
-    set_default();
-    local @get_ip_port_args = ();
-    local @get_ip_port_returns = ('real');
-    local @get_forward_flag_args = ();
-    local @get_forward_flag_returns = ('-m');
-    my %expected = %main::GLOBAL;
-    $main::CONFIG{virtual} = [ undef, undef, {
-        retryinterval => -100,
-                                             } ];
-    $expected{virtual}     = [ undef, undef, {
-        checkcount => $main::CONFIG{checkcount},
-        checktimeout => $main::CONFIG{checktimeout},
-        negotiatetimeout => $main::CONFIG{negotiatetimeout},
-        checkinterval => $main::CONFIG{checkinterval},
-        retryinterval => $main::CONFIG{retryinterval},
-        quiescent => $main::CONFIG{quiescent},
-                               } ];
-    ld_setup();
-    is_deeply \%main::CONFIG, \%expected, 'ld_setup - invalid retryinterval ok';
-}
-{
-    set_default();
-    local @get_ip_port_args = ();
-    local @get_ip_port_returns = ('real');
-    local @get_forward_flag_args = ();
-    local @get_forward_flag_returns = ('-m');
-    my %expected = %main::GLOBAL;
-    $main::CONFIG{virtual} = [ undef, undef, {
-        quiescent => 0,
-                                             } ];
-    $expected{virtual}     = [ undef, undef, {
-        checkcount => $main::CONFIG{checkcount},
-        checktimeout => $main::CONFIG{checktimeout},
-        negotiatetimeout => $main::CONFIG{negotiatetimeout},
-        checkinterval => $main::CONFIG{checkinterval},
-        retryinterval => $main::CONFIG{retryinterval},
-        quiescent => 0,
-                               } ];
-    ld_setup();
-    is_deeply \%main::CONFIG, \%expected, 'ld_setup - valid quiescent ok';
-}
-# test end
-#...............................................
-
-L7lib::comment_in();
-
-sub set_default {
-    %main::CONFIG = %main::GLOBAL;
-    $main::PROC_ENV{hostname} = 'test';
-}
-sub override {
-    *get_ip_port = \&__get_ip_port;
-    *get_forward_flag = \&__get_forward_flag;
-    *ld_log = \&__ld_log;
-}
-sub __get_ip_port {
-    push @get_ip_port_args, @_;
-    return shift @get_ip_port_returns;
-}
-sub __get_forward_flag {
-    push @get_forward_flag_args, @_;
-    return shift @get_forward_flag_returns;
-}
-sub __ld_log {
-}
-
diff --git a/l7directord/t/09_l7vsadm.t b/l7directord/t/09_l7vsadm.t
deleted file mode 100644 (file)
index 056fa18..0000000
+++ /dev/null
@@ -1,555 +0,0 @@
-use strict;
-use warnings;
-no warnings qw(redefine once);
-use lib qw(t/lib lib);
-use subs qw(print);
-use Cwd;
-use L7lib;
-use Test::More tests => 22;
-use Socket;
-use Socket6;
-
-L7lib::chdir();
-L7lib::comment_out();
-require './l7directord';
-override();
-
-our @get_ip_port_args = ();
-our @get_ip_port_returns = ();
-our @get_forward_flag_args = ();
-our @get_forward_flag_returns = ();
-our @system_wrapper_args = ();
-our @system_wrapper_returns = ();
-our @command_wrapper_args = ();
-our @command_wrapper_returns = ();
-#...............................................
-# test start
-#   - ld_read_l7vsadm
-################################################################################
-{
-    set_default();
-    local @get_ip_port_args = ();
-    local @get_ip_port_returns = ();
-    local @get_forward_flag_args = ();
-    local @get_forward_flag_returns = ();
-    local @system_wrapper_args = ();
-    local @system_wrapper_returns = ();
-    local $main::PROC_ENV{l7vsadm} = '/';
-    my %expected = (
-    );
-    my $got = ld_read_l7vsadm();
-    is_deeply $got, \%expected, 'ld_read_l7vsadm - no l7vsadm ok(1)';
-}
-{
-    set_default();
-    local @get_ip_port_args = ();
-    local @get_ip_port_returns = ();
-    local @get_forward_flag_args = ();
-    local @get_forward_flag_returns = ();
-    local @system_wrapper_args = ();
-    local @system_wrapper_returns = ();
-    local $main::PROC_ENV{l7vsadm} = '/proc/1';
-    my %expected = (
-    );
-    my $got = ld_read_l7vsadm();
-    is_deeply $got, \%expected, 'ld_read_l7vsadm - no l7vsadm ok(2)';
-}
-{
-    set_default();
-    local @get_ip_port_args = ();
-    local @get_ip_port_returns = ();
-    local @get_forward_flag_args = ();
-    local @get_forward_flag_returns = ();
-    local @system_wrapper_args = ();
-    local @system_wrapper_returns = ();
-    local $main::PROC_ENV{l7vsadm} = 't/lib/l7vsadm.1';
-    my %expected = (
-    );
-    my $got = ld_read_l7vsadm();
-    is_deeply $got, \%expected, 'ld_read_l7vsadm - no virtual service ok';
-}
-{
-### IPv4 Normal VirtualService Only
-    set_default();
-    local @get_ip_port_args = ();
-    local @get_ip_port_returns = ();
-    local @get_forward_flag_args = ();
-    local @get_forward_flag_returns = ();
-    local @system_wrapper_args = ();
-    local @system_wrapper_returns = ();
-    local $main::PROC_ENV{l7vsadm} = 't/lib/l7vsadm.2';
-    my %expected = (
-        'tcp:10.10.10.1:1234:sessionless' => {
-              'other_virtual_option' => ' none none none none'
-        },
-    );
-    my $got = ld_read_l7vsadm();
-    is_deeply $got, \%expected, 'ld_read_l7vsadm - one virtual service ok';
-}
-{
-### IPv4 Normal VirtualService Only
-    set_default();
-    local @get_ip_port_args = ();
-    local @get_ip_port_returns = ();
-    local @get_forward_flag_args = ();
-    local @get_forward_flag_returns = ('-m');
-    local @system_wrapper_args = ();
-    local @system_wrapper_returns = ();
-    local $main::PROC_ENV{l7vsadm} = 't/lib/l7vsadm.3';
-    my %expected = (
-        'tcp:127.0.0.1:80:ip' => {
-            '192.168.0.1:8080' => {
-                server => { ip => '192.168.0.1', port => 8080 },
-                weight => 5,
-                forward => 'Masq',
-                option => { flags => '-r 192.168.0.1:8080',
-                            forward => '-m' },
-            },
-            'other_virtual_option' => ' none none none none',
-        },
-    );
-    my $got = ld_read_l7vsadm();
-    is_deeply $got, \%expected, 'ld_read_l7vsadm - one virtual service, one real server ok';
-}
-{
-    set_default();
-    local @get_ip_port_args = ();
-    local @get_ip_port_returns = ();
-    local @get_forward_flag_args = ();
-    local @get_forward_flag_returns = ('-m', '-m', '-m');
-    local @system_wrapper_args = ();
-    local @system_wrapper_returns = ();
-    local $main::PROC_ENV{l7vsadm} = 't/lib/l7vsadm.4';
-    my %expected = (
-        'tcp:127.0.0.1:80:ip' => {
-            '192.168.0.1:80' => {
-                server => { ip => '192.168.0.1', port => 80 },
-                weight => 3,
-                forward => 'Masq',
-                option => { flags => '-r 192.168.0.1:80',
-                            forward => '-m' },
-            },
-            '192.168.0.2:80' => {
-                server => { ip => '192.168.0.2', port => 80 },
-                weight => 2,
-                forward => 'Masq',
-                option => { flags => '-r 192.168.0.2:80',
-                            forward => '-m' },
-            },
-            '192.168.0.3:80' => {
-                server => { ip => '192.168.0.3', port => 80 },
-                weight => 1,
-                forward => 'Masq',
-                option => { flags => '-r 192.168.0.3:80',
-                            forward => '-m' },
-            },
-            'other_virtual_option' => ' none none none none',
-        },
-    );
-    my $got = ld_read_l7vsadm();
-    is_deeply $got, \%expected, 'ld_read_l7vsadm - one virtual service, three real server ok';
-}
-{
-    set_default();
-    local @get_ip_port_args = ();
-    local @get_ip_port_returns = ();
-    local @get_forward_flag_args = ();
-    local @get_forward_flag_returns = ();
-    local @system_wrapper_args = ();
-    local @system_wrapper_returns = ();
-    local $main::PROC_ENV{l7vsadm} = 't/lib/l7vsadm.5';
-    my %expected = (
-        'tcp:127.0.0.1:80:sessionless' => {
-            'other_virtual_option' => ' /etc/l7vs/ssl/ssl.target_1.cf deferaccept,nodelay,cork,quickackoff /var/log/l7vs/l7vsd_conn.log',
-        },
-        'tcp:192.168.0.1:8080:sslid' => {
-            'other_virtual_option' => ' none deferaccept,nodelay,cork,quickackoff none none',
-        },
-        'tcp:192.168.0.100:10000:ip' => {
-            'other_virtual_option' => ' none none none none',
-        },
-    );
-    my $got = ld_read_l7vsadm();
-    is_deeply $got, \%expected, 'ld_read_l7vsadm - three virtual service ok';
-}
-{
-    set_default();
-    local @get_ip_port_args = ();
-    local @get_ip_port_returns = ();
-    local @get_forward_flag_args = ();
-    local @get_forward_flag_returns = ('-m', '-m', '-m');
-    local @system_wrapper_args = ();
-    local @system_wrapper_returns = ();
-    local $main::PROC_ENV{l7vsadm} = 't/lib/l7vsadm.6';
-    my %expected = (
-        'tcp:127.0.0.1:80:sessionless' => {
-            '192.168.0.1:80' => {
-                server => { ip => '192.168.0.1', port => 80 },
-                weight => 1,
-                forward => 'Masq',
-                option => { flags => '-r 192.168.0.1:80',
-                            forward => '-m' },
-            },
-            '192.168.0.2:80' => {
-                server => { ip => '192.168.0.2', port => 80 },
-                weight => 1,
-                forward => 'Masq',
-                option => { flags => '-r 192.168.0.2:80',
-                            forward => '-m' },
-            },
-            'other_virtual_option' => ' none none none none',
-        },
-        'tcp:10.10.10.10:10:sslid' => {
-            'other_virtual_option' => ' none none none none',
-        },
-        'tcp:20.20.20.20:20:ip' => {
-            '192.168.0.1:80' => {
-                server => { ip => '192.168.0.1', port => 80 },
-                weight => 1,
-                forward => 'Masq',
-                option => { flags => '-r 192.168.0.1:80',
-                            forward => '-m' },
-            },
-            'other_virtual_option' => ' none none none none',
-        },
-    );
-    my $got = ld_read_l7vsadm();
-    is_deeply $got, \%expected, 'ld_read_l7vsadm - virtual 1: two real, virtual 2: no real, virtual 3: one real ok';
-}
-{
-    set_default();
-    local @get_ip_port_args = ();
-    local @get_ip_port_returns = ();
-    local @get_forward_flag_args = ();
-    local @get_forward_flag_returns = ();
-    local @system_wrapper_args = ();
-    local @system_wrapper_returns = ();
-    local $main::PROC_ENV{l7vsadm} = 't/lib/l7vsadm.7';
-    my %expected = (
-    );
-    my $got = ld_read_l7vsadm();
-    is_deeply $got, \%expected, 'ld_read_l7vsadm - no virtual, ignore real';
-}
-{
-    set_default();
-    local @get_ip_port_args = ();
-    local @get_ip_port_returns = ();
-    local @get_forward_flag_args = ();
-    local @get_forward_flag_returns = ('-m');
-    local @system_wrapper_args = ();
-    local @system_wrapper_returns = ();
-    local $main::PROC_ENV{l7vsadm} = 't/lib/l7vsadm.8';
-    my %expected = (
-        'tcp:192.168.0.1:8080:sessionless' => {
-            '192.168.0.2:80' => {
-                server => { ip => '192.168.0.2', port => 80 },
-                weight => 1,
-                forward => 'Masq',
-                option => { flags => '-r 192.168.0.2:80',
-                            forward => '-m' },
-            },
-            'other_virtual_option' => ' none none none none',
-        },
-    );
-    my $got = ld_read_l7vsadm();
-    is_deeply $got, \%expected, 'ld_read_l7vsadm - ignore real, one virtual, one real ok';
-}
-##############################################################################################
-{
-### IPv6 Normal VirtualService Only
-    set_default();
-    local @get_ip_port_args = ();
-    local @get_ip_port_returns = ();
-    local @get_forward_flag_args = ();
-    local @get_forward_flag_returns = ('-m');
-    local @system_wrapper_args = ();
-    local @system_wrapper_returns = ();
-    local $main::PROC_ENV{l7vsadm} = 't/lib/l7vsadm.103';
-    my %expected = (
-        'tcp:[2001::1]:80:ip' => {
-            '[fe80::%eth1]:8080' => {
-                server => { ip => '[fe80::%eth1]', port => 8080 },
-                weight => 5,
-                forward => 'Masq',
-                option => { flags => '-r [fe80::%eth1]:8080',
-                            forward => '-m' },
-            },
-            'other_virtual_option' => ' none none none none',
-        },
-    );
-    my $got = ld_read_l7vsadm();
-    is_deeply $got, \%expected, 'ld_read_l7vsadm - one virtual service, one real server ok';
-}
-{
-    set_default();
-    local @get_ip_port_args = ();
-    local @get_ip_port_returns = ();
-    local @get_forward_flag_args = ();
-    local @get_forward_flag_returns = ('-m', '-m', '-m');
-    local @system_wrapper_args = ();
-    local @system_wrapper_returns = ();
-    local $main::PROC_ENV{l7vsadm} = 't/lib/l7vsadm.104';
-    my %expected = (
-        'tcp:[2001:1:2:3:4:5:6:7]:80:ip' => {
-            '[fe80:ffff:ffff:eeee:dddd:cccc:bbbb:aaaa]:80' => {
-                server => { ip => '[fe80:ffff:ffff:eeee:dddd:cccc:bbbb:aaaa]', port => 80 },
-                weight => 3,
-                forward => 'Masq',
-                option => { flags => '-r [fe80:ffff:ffff:eeee:dddd:cccc:bbbb:aaaa]:80',
-                            forward => '-m' },
-            },
-            '[fe80:1:22:333:4444:5:66:777]:80' => {
-                server => { ip => '[fe80:1:22:333:4444:5:66:777]', port => 80 },
-                weight => 2,
-                forward => 'Masq',
-                option => { flags => '-r [fe80:1:22:333:4444:5:66:777]:80',
-                            forward => '-m' },
-            },
-            '[fe80:ffff:ffff::ffff:ffff]:80' => {
-                server => { ip => '[fe80:ffff:ffff::ffff:ffff]', port => 80 },
-                weight => 1,
-                forward => 'Masq',
-                option => { flags => '-r [fe80:ffff:ffff::ffff:ffff]:80',
-                            forward => '-m' },
-            },
-            'other_virtual_option' => ' none none none none',
-        },
-    );
-    my $got = ld_read_l7vsadm();
-    is_deeply $got, \%expected, 'ld_read_l7vsadm - one virtual service, three real server ok';
-}
-{
-    set_default();
-    local @get_ip_port_args = ();
-    local @get_ip_port_returns = ();
-    local @get_forward_flag_args = ();
-    local @get_forward_flag_returns = ();
-    local @system_wrapper_args = ();
-    local @system_wrapper_returns = ();
-    local $main::PROC_ENV{l7vsadm} = 't/lib/l7vsadm.105';
-    my %expected = (
-        'tcp:[2001::2]:80:sessionless' => {
-            'other_virtual_option' => ' /etc/l7vs/ssl/ssl.target_1.cf deferaccept,nodelay,cork,quickackoff /var/log/l7vs/l7vsd_conn.log',
-        },
-        'tcp:[::]:8080:sslid' => {
-            'other_virtual_option' => ' none deferaccept,nodelay,cork,quickackoff none none',
-        },
-        'tcp:[3901:222:333:444:555::]:10000:ip' => {
-            'other_virtual_option' => ' none none none none',
-        },
-    );
-    my $got = ld_read_l7vsadm();
-    is_deeply $got, \%expected, 'ld_read_l7vsadm - three virtual service ok';
-}
-{
-    set_default();
-    local @get_ip_port_args = ();
-    local @get_ip_port_returns = ();
-    local @get_forward_flag_args = ();
-    local @get_forward_flag_returns = ('-m', '-m', '-m');
-    local @system_wrapper_args = ();
-    local @system_wrapper_returns = ();
-    local $main::PROC_ENV{l7vsadm} = 't/lib/l7vsadm.106';
-    my %expected = (
-        'tcp:[::]:80:sessionless' => {
-            '192.168.0.1:80' => {
-                server => { ip => '192.168.0.1', port => 80 },
-                weight => 1,
-                forward => 'Masq',
-                option => { flags => '-r 192.168.0.1:80',
-                            forward => '-m' },
-            },
-            '192.168.0.2:80' => {
-                server => { ip => '192.168.0.2', port => 80 },
-                weight => 1,
-                forward => 'Masq',
-                option => { flags => '-r 192.168.0.2:80',
-                            forward => '-m' },
-            },
-            'other_virtual_option' => ' none none none none',
-        },
-        'tcp:[::1]:10:sslid' => {
-            'other_virtual_option' => ' none none none none',
-        },
-        'tcp:[0:0:0:0:0:0:0:0]:20:ip' => {
-            '[222:333:4::55]:80' => {
-                server => { ip => '[222:333:4::55]', port => 80 },
-                weight => 1,
-                forward => 'Masq',
-                option => { flags => '-r [222:333:4::55]:80',
-                            forward => '-m' },
-            },
-            'other_virtual_option' => ' none none none none',
-        },
-    );
-    my $got = ld_read_l7vsadm();
-    is_deeply $got, \%expected, 'ld_read_l7vsadm - virtual 1: two real, virtual 2: no real, virtual 3: one real ok';
-}
-{
-    set_default();
-    local @get_ip_port_args = ();
-    local @get_ip_port_returns = ();
-    local @get_forward_flag_args = ();
-    local @get_forward_flag_returns = ();
-    local @system_wrapper_args = ();
-    local @system_wrapper_returns = ();
-    local $main::PROC_ENV{l7vsadm} = 't/lib/l7vsadm.107';
-    my %expected = (
-    );
-    my $got = ld_read_l7vsadm();
-    is_deeply $got, \%expected, 'ld_read_l7vsadm - no virtual, ignore real';
-}
-{
-    set_default();
-    local @get_ip_port_args = ();
-    local @get_ip_port_returns = ();
-    local @get_forward_flag_args = ();
-    local @get_forward_flag_returns = ('-m');
-    local @system_wrapper_args = ();
-    local @system_wrapper_returns = ();
-    local $main::PROC_ENV{l7vsadm} = 't/lib/l7vsadm.108';
-    my %expected = (
-        'tcp:[2001::1]:8080:sessionless' => {
-            '192.168.0.2:80' => {
-                server => { ip => '192.168.0.2', port => 80 },
-                weight => 1,
-                forward => 'Masq',
-                option => { flags => '-r 192.168.0.2:80',
-                            forward => '-m' },
-            },
-            'other_virtual_option' => ' none none none none',
-        },
-    );
-    my $got = ld_read_l7vsadm();
-    is_deeply $got, \%expected, 'ld_read_l7vsadm - ignore real, one virtual, one real ok';
-}
-#######################################################################################
-#   - ld_add_virtual
-#   - ld_operate_virtual
-{
-    set_default();
-    local @get_ip_port_args = ();
-    local @get_ip_port_returns = ('1.1.1.1:1');
-    local @get_forward_flag_args = ();
-    local @get_forward_flag_returns = ();
-    local @command_wrapper_args = ();
-    local @command_wrapper_returns = (0, q{});
-    local $main::PROC_ENV{l7vsadm} = 'l7vsadm';
-    my $v = { module => { name => 'sslid' }, option => { flags => '-t 1.1.1.1:1 -m sslid' } };
-    ld_add_virtual($v);
-    is_deeply \@command_wrapper_args, ['l7vsadm -A -t 1.1.1.1:1 -m sslid 2>&1'], 'ld_add_virtual - ok';
-}
-#   - ld_edit_virtual
-#   - ld_operate_virtual
-{
-    set_default();
-    local @get_ip_port_args = ();
-    local @get_ip_port_returns = ('1.1.1.1:1');
-    local @get_forward_flag_args = ();
-    local @get_forward_flag_returns = ();
-    local @command_wrapper_args = ();
-    local @command_wrapper_returns = (0, q{});
-    local $main::PROC_ENV{l7vsadm} = 'l7vsadm';
-    my $v = { module => { name => 'sslid' }, option => { flags => '-t 1.1.1.1:1 -m sslid' } };
-    ld_edit_virtual($v);
-    is_deeply \@command_wrapper_args, ['l7vsadm -E -t 1.1.1.1:1 -m sslid 2>&1'], 'ld_edit_virtual - ok';
-}
-#   - ld_delete_virtual
-#   - ld_operate_virtual
-{
-    set_default();
-    local @get_ip_port_args = ();
-    local @get_ip_port_returns = ('1.1.1.1:1');
-    local @get_forward_flag_args = ();
-    local @get_forward_flag_returns = ();
-    local @command_wrapper_args = ();
-    local @command_wrapper_returns = (0, q{});
-    local $main::PROC_ENV{l7vsadm} = 'l7vsadm';
-    my $v = { module => { name => 'sslid' }, option => { main => '-t 1.1.1.1:1 -m sslid' } };
-    ld_delete_virtual($v);
-    is_deeply \@command_wrapper_args, ['l7vsadm -D -t 1.1.1.1:1 -m sslid 2>&1'], 'ld_delete_virtual - ok';
-}
-#   - ld_add_real
-#   - ld_operate_real
-{
-    set_default();
-    local @get_ip_port_args = ();
-    local @get_ip_port_returns = ('1.1.1.1:1', '2.2.2.2:2');
-    local @get_forward_flag_args = ();
-    local @get_forward_flag_returns = ();
-    local @command_wrapper_args = ();
-    local @command_wrapper_returns = (0, q{});
-    local $main::PROC_ENV{l7vsadm} = 'l7vsadm';
-    my $v = { module => { name => 'sslid' }, option => { main => '-t 1.1.1.1:1 -m sslid' } };
-    my $r = { option => { flags => '-r 2.2.2.2:2' } };
-    my $weight = 10;
-    ld_add_real($v, $r, $weight);
-    is_deeply \@command_wrapper_args, ['l7vsadm -a -t 1.1.1.1:1 -m sslid -r 2.2.2.2:2 -w 10 2>&1'], 'ld_add_real - ok';
-}
-#   - ld_edit_real
-#   - ld_operate_real
-{
-    set_default();
-    local @get_ip_port_args = ();
-    local @get_ip_port_returns = ('1.1.1.1:1', '2.2.2.2:2');
-    local @get_forward_flag_args = ();
-    local @get_forward_flag_returns = ();
-    local @command_wrapper_args = ();
-    local @command_wrapper_returns = (0, q{});
-    local $main::PROC_ENV{l7vsadm} = 'l7vsadm';
-    my $v = { module => { name => 'sslid' }, option => { main => '-t 1.1.1.1:1 -m sslid' } };
-    my $r = { option => { flags => '-r 2.2.2.2:2' } };
-    my $weight = 10;
-    ld_edit_real($v, $r, $weight);
-    is_deeply \@command_wrapper_args, ['l7vsadm -e -t 1.1.1.1:1 -m sslid -r 2.2.2.2:2 -w 10 2>&1'], 'ld_edit_real - ok';
-}
-#   - ld_delete_real
-#   - ld_operate_real
-{
-    set_default();
-    local @get_ip_port_args = ();
-    local @get_ip_port_returns = ('1.1.1.1:1', '2.2.2.2:2');
-    local @get_forward_flag_args = ();
-    local @get_forward_flag_returns = ();
-    local @command_wrapper_args = ();
-    local @command_wrapper_returns = (0, q{});
-    local $main::PROC_ENV{l7vsadm} = 'l7vsadm';
-    my $v = { module => { name => 'sslid' }, option => { main => '-t 1.1.1.1:1 -m sslid' } };
-    my $r = { option => { flags => '-r 2.2.2.2:2' } };
-    my $weight = 10;
-    ld_delete_real($v, $r, $weight);
-    is_deeply \@command_wrapper_args, ['l7vsadm -d -t 1.1.1.1:1 -m sslid -r 2.2.2.2:2 2>&1'], 'ld_delete_real - ok';
-}
-# test end
-#...............................................
-
-L7lib::comment_in();
-
-sub set_default {
-    $main::PROC_ENV{l7vsadm} = 'l7vsadm';
-}
-sub override {
-    *get_ip_port = \&__get_ip_port;
-    *get_forward_flag = \&__get_forward_flag;
-    *system_wrapper = \&__system_wrapper;
-    *command_wrapper = \&__command_wrapper;
-    *ld_log = \&__ld_log;
-}
-sub __get_ip_port {
-    push @get_ip_port_args, @_;
-    return shift @get_ip_port_returns;
-}
-sub __get_forward_flag {
-    push @get_forward_flag_args, @_;
-    return shift @get_forward_flag_returns;
-}
-sub __system_wrapper {
-    push @system_wrapper_args, @_;
-    return shift @system_wrapper_returns;
-}
-sub __command_wrapper {
-    push @command_wrapper_args, @_;
-    return shift @command_wrapper_returns;
-}
-sub __ld_log {
-}
diff --git a/l7directord/t/10_startstop.t b/l7directord/t/10_startstop.t
deleted file mode 100644 (file)
index bea1d52..0000000
+++ /dev/null
@@ -1,523 +0,0 @@
-use strict;
-use warnings;
-no warnings qw(redefine once);
-use lib qw(t/lib lib);
-use subs qw(print);
-use Cwd;
-use L7lib;
-use Test::More tests => 28;
-use Socket;
-use Socket6;
-
-L7lib::chdir();
-L7lib::comment_out();
-require './l7directord';
-override();
-
-our @ld_read_l7vsadm_args = ();
-our @ld_read_l7vsadm_returns = ();
-our @get_virtual_id_str_args = ();
-our @get_virtual_id_str_returns = ();
-our @ld_add_virtual_args = ();
-our @ld_add_virtual_returns = ();
-our @ld_edit_virtual_args = ();
-our @ld_edit_virtual_returns = ();
-our @fallback_find_args = ();
-our @fallback_find_returns = ();
-our @get_ip_port_args = ();
-our @get_ip_port_returns = ();
-our @get_health_check_id_str_args = ();
-our @get_health_check_id_str_returns = ();
-our @ld_delete_virtual_args = ();
-our @ld_delete_virtual_returns = ();
-our @ld_delete_real_args = ();
-our @ld_delete_real_returns = ();
-#...............................................
-# test start
-#   - ld_start
-{
-    set_default();
-    local @ld_read_l7vsadm_returns = ();
-    ld_start();
-    is_deeply \%main::CONFIG, \%main::GLOBAL, 'ld_start - l7vsadm error';
-}
-{
-    set_default();
-    local @ld_read_l7vsadm_returns = ( {} );
-    $main::CONFIG{virtual} = [ { protocol => 'tcp' } ];
-    my %expected = %main::GLOBAL;
-    $expected{virtual} = [ { protocol => 'tcp' } ];
-    ld_start();
-    is_deeply \%main::CONFIG, \%expected, 'ld_start - l7vsadm has no service';
-}
-### Option Key の変更なしによる -E投入確認
-{
-    set_default();
-    local @ld_read_l7vsadm_returns = ( {
-        'tcp:[2001::1]:8080:sessionless' => {
-            '192.168.0.2:80' => {
-                server => { ip => '192.168.0.2', port => 80 },
-                weight => 1,
-                forward => 'Masq',
-                option => { flags => '-r 192.168.0.2:80',
-                            forward => '-m' },
-            },
-            'other_virtual_option' => ' none none none none',
-        },
-                                       } );
-    local @get_virtual_id_str_returns = ('tcp:[2001::1]:8080:sessionless');
-    $main::CONFIG{virtual} = [ 
-        {
-            '192.168.0.2:80' => {
-                server => { ip => '192.168.0.2', port => 80 },
-                weight => 1,
-                forward => 'Masq',
-                option => { flags => '-r 192.168.0.2:80',
-                            forward => '-m' },
-            },
-            other_virtual_key => ' none none none none',
-            protocol => 'tcp' 
-         } ];
-    my %expected = %main::GLOBAL;
-    $expected{virtual} = [ {
-         '192.168.0.2:80' => {
-            'forward' => 'Masq',
-            'option' => {
-               'flags' => '-r 192.168.0.2:80',
-               'forward' => '-m',},
-            'server' => {
-               'ip' => '192.168.0.2',
-               'port' => 80},
-            'weight' => 1,
-         },
-         'other_virtual_key' => ' none none none none',
-         'protocol' => 'tcp' }, ];
-    ld_start();
-    is_deeply \%main::CONFIG, \%expected, 'ld_start - get_virtual_id_ok';
-}
-### Option Key の変更による -D、-A投入確認1
-{
-    set_default();
-    local @ld_read_l7vsadm_returns = ( {
-        'tcp:[2001::1]:8080:sessionless' => {
-            '192.168.0.2:80' => {
-                server => { ip => '192.168.0.2', port => 80 },
-                weight => 1,
-                forward => 'Masq',
-                option => { flags => '-r 192.168.0.2:80',
-                            forward => '-m' },
-            },
-            'other_virtual_option' => ' chg none none none',
-        },
-                                       } );
-    local @get_virtual_id_str_returns = ('tcp:[2001::1]:8080:sessionless');
-    $main::CONFIG{virtual} = [ 
-        {
-            '192.168.0.2:80' => {
-                server => { ip => '192.168.0.2', port => 80 },
-                weight => 1,
-                forward => 'Masq',
-                option => { flags => '-r 192.168.0.2:80',
-                            forward => '-m' },
-            },
-            other_virtual_key => ' none none none none',
-            protocol => 'tcp' 
-         } ];
-    my %expected = %main::GLOBAL;
-    $expected{virtual} = [ {
-         '192.168.0.2:80' => {
-            'forward' => 'Masq',
-            'option' => {
-               'flags' => '-r 192.168.0.2:80',
-               'forward' => '-m',},
-            'server' => {
-               'ip' => '192.168.0.2',
-               'port' => 80},
-            'weight' => 1,
-         },
-         'other_virtual_key' => ' chg none none none',
-         'protocol' => 'tcp' }, ];
-    ld_start();
-    is_deeply \%main::CONFIG, \%expected, 'ld_start - Change Option Key Check ok';
-}
-### Option Key の変更による -D、-A投入確認2(error パターン)
-### 通常ありえないパターン(ファイルの状態と動作状態があっていないケース)
-{
-    set_default();
-    local @ld_read_l7vsadm_returns = ( {
-        'tcp:[2001::1]:8080:sessionless' => {
-            '192.168.0.2:80' => {
-                server => { ip => '192.168.0.2', port => 80 },
-                weight => 1,
-                forward => 'Masq',
-                option => { flags => '-r 192.168.0.2:80',
-                            forward => '-m' },
-            },
-            'other_virtual_option' => ' none none none none',
-        },
-                                       } );
-    local @get_virtual_id_str_returns = ('tcp:[2001::1]:8080:sessionless');
-    $main::CONFIG{virtual} = [ 
-        {
-            '192.168.0.2:80' => {
-                server => { ip => '192.168.0.2', port => 80 },
-                weight => 1,
-                forward => 'Masq',
-                option => { flags => '-r 192.168.0.2:80',
-                            forward => '-m' },
-            },
-            other_virtual_key => ' none none none org',
-            protocol => 'tcp' 
-         } ];
-    my %expected = %main::GLOBAL;
-    $expected{virtual} = [ {
-         '192.168.0.2:80' => {
-            'forward' => 'Masq',
-            'option' => {
-               'flags' => '-r 192.168.0.2:80',
-               'forward' => '-m',},
-            'server' => {
-               'ip' => '192.168.0.2',
-               'port' => 80},
-            'weight' => 1,
-         },
-         'other_virtual_key' => ' none none none none',
-         'protocol' => 'tcp' }, ];
-    ld_start();
-    is_deeply \%main::CONFIG, \%expected, 'ld_start - Change Option Key Not Pattern';
-}
-### 初回 の -A投入確認
-{
-    set_default();
-    local @ld_read_l7vsadm_returns = ( {
-                                       } );
-    local @get_virtual_id_str_returns = ('tcp:[2001::1]:8080:sessionless');
-    $main::CONFIG{virtual} = [ 
-        {
-            '192.168.0.2:80' => {
-                server => { ip => '192.168.0.2', port => 80 },
-                weight => 1,
-                forward => 'Masq',
-                option => { flags => '-r 192.168.0.2:80',
-                            forward => '-m' },
-            },
-            other_virtual_key => ' none none none none',
-            protocol => 'tcp' 
-         } ];
-    my %expected = %main::GLOBAL;
-    $expected{virtual} = [ {
-         '192.168.0.2:80' => {
-            'forward' => 'Masq',
-            'option' => {
-               'flags' => '-r 192.168.0.2:80',
-               'forward' => '-m',},
-            'server' => {
-               'ip' => '192.168.0.2',
-               'port' => 80},
-            'weight' => 1,
-         },
-         'other_virtual_key' => ' none none none none',
-         'protocol' => 'tcp' }, ];
-    ld_start();
-    is_deeply \%main::CONFIG, \%expected, 'ld_start - Change Option Key Check ok';
-}
-{
-    set_default();
-    local @ld_read_l7vsadm_returns = ( { vid => {
-                                           other_virtual_option => ' none none none none'},
-                                       }, );
-    local @get_virtual_id_str_returns = ('vid');
-    $main::CONFIG{virtual} = [ { protocol => 'tcp' ,
-                                 other_virtual_key => ' none none none none' },
-                             ];
-    my %expected = %main::GLOBAL;
-    $expected{virtual} = [ { protocol => 'tcp' ,
-                             other_virtual_key => ' none none none none' },
-                         ];
-    ld_start();
-    is_deeply \%main::CONFIG, \%expected, 'ld_start - edit virtual';
-##    is_deeply \@ld_edit_virtual_args, 
-##                     [
-##      '192.168.0.2:80' => {
-##         'forward' => 'Masq',
-##         'option' => {
-##            'flags' => '-r 192.168.0.2:80',
-##            'forward' => '-m',
-##         },
-##         'server' => {
-##            'ip' => '192.168.0.2',
-##            'port' => 80,
-##         },
-##         'weight' => 1,
-##      'other_virtual_key' => ' none none none none',
-##      'protocol' => 'tcp',
-##      }
-##, ],
-##                      'ld_start - edit virtual call';
-}
-{
-    set_default();
-    local @ld_read_l7vsadm_returns = ( {} );
-    local @get_virtual_id_str_returns = ('vid');
-    $main::CONFIG{virtual} = [ { protocol => 'tcp' } ];
-    my %expected = %main::GLOBAL;
-    $expected{virtual} = [ { protocol => 'tcp' } ];
-    ld_start();
-    is_deeply \%main::CONFIG, \%expected, 'ld_start - add virtual';
-##    is_deeply \@ld_add_virtual_args, [ { protocol => 'tcp' } ], 'ld_start - add virtual call';
-}
-{
-    set_default();
-    local @ld_read_l7vsadm_returns = ( { vid => { 'fbip:fbport' => {} ,
-                                           other_virtual_option => ' none none none none',},
-                                       }, );
-    local @get_virtual_id_str_returns = ('vid');
-    local @fallback_find_returns = ( {} );
-    local @get_ip_port_returns = ( 'fbip:fbport' );
-    $main::CONFIG{virtual} = [ { protocol => 'tcp',
-                                 other_virtual_key => ' none none none none',
-                             }, ];
-    my %expected = %main::GLOBAL;
-    $expected{virtual} = [ { protocol => 'tcp' ,
-                             other_virtual_key => ' none none none none',
-                         }, ];
-    ld_start();
-    is_deeply \%main::CONFIG, \%expected, 'ld_start - fallback find';
-#    is_deeply \@ld_delete_real_args, [], 'ld_start - not delete fallback';
-}
-{
-    set_default();
-    local @ld_read_l7vsadm_returns = ( { vid => { 'fbip:fbport' => undef, 'foo:bar' => { ip => 'foo' } } } );
-    local @get_virtual_id_str_returns = ('vid');
-    local @fallback_find_returns = ( {} );
-    local @get_ip_port_returns = ( 'fbip:fbport' );
-    $main::CONFIG{virtual} = [ { protocol => 'tcp' } ];
-    my %expected = %main::GLOBAL;
-    $expected{virtual} = [ { protocol => 'tcp' } ];
-    ld_start();
-    is_deeply \%main::CONFIG, \%expected, 'ld_start - delete not management real';
-##Warnning       is_deeply \@ld_delete_real_args, [{ protocol => 'tcp', other_virtual_key => ' none none none none',}, { ip => 'foo' }, ], 'ld_start - delete real';
-}
-{
-    set_default();
-    local @ld_read_l7vsadm_returns = ( { vid => { 'foo:bar' => { ip => 'foo' ,} }, } );
-    local @get_virtual_id_str_returns = ('vid');
-    local @get_health_check_id_str_returns = ();
-    local @fallback_find_returns = ();
-    local @get_ip_port_returns = ( 'foo:bar' );
-    $main::CONFIG{virtual} = [ {
-                protocol => 'tcp',
-                real => [ 'real' ],
-                             } ];
-    my %expected = %main::GLOBAL;
-    $expected{virtual} = [ {
-                protocol => 'tcp',
-                real => [ 'real' ],
-                             } ];
-    ld_start();
-    is_deeply \%main::CONFIG, \%expected, 'ld_start - health_check_id_str error';
-}
-{
-    set_default();
-    local @ld_read_l7vsadm_returns = ( { vid => { 'foo:bar' => { ip => 'foo' } } } );
-    local @get_virtual_id_str_returns = ('vid');
-    local @get_health_check_id_str_returns = ('hid');
-    local @fallback_find_returns = ();
-    local @get_ip_port_returns = ( 'foo:bar' );
-    local %main::HEALTH_CHECK = ();
-    $main::CONFIG{virtual} = [ {
-                protocol => 'tcp',
-                real => [ 'real' ],
-                             } ];
-    my %expected = %main::GLOBAL;
-    $expected{virtual} = [ {
-                protocol => 'tcp',
-                real => [ 'real' ],
-                             } ];
-    ld_start();
-    is_deeply \%main::CONFIG, \%expected, 'ld_start - new health check';
-    is_deeply \%main::HEALTH_CHECK, { hid => { manage => [
-                [ $expected{virtual}[0], $expected{virtual}[0]{real}[0] ]
-                                                         ] } }, 'ld_start - new health check id';
-}
-{
-    set_default();
-    local @ld_read_l7vsadm_returns = ( { vid => { 'foo:bar' => { ip => 'foo' } } } );
-    local @get_virtual_id_str_returns = ('vid');
-    local @get_health_check_id_str_returns = ('hid');
-    local @fallback_find_returns = ();
-    local @get_ip_port_returns = ( 'foo:bar' );
-    local %main::HEALTH_CHECK = ( hid => undef );
-    $main::CONFIG{virtual} = [ {
-                protocol => 'tcp',
-                real => [ 'real' ],
-                             } ];
-    my %expected = %main::GLOBAL;
-    $expected{virtual} = [ {
-                protocol => 'tcp',
-                real => [ 'real' ],
-                             } ];
-    ld_start();
-    is_deeply \%main::CONFIG, \%expected, 'ld_start - add health check';
-    is_deeply \%main::HEALTH_CHECK, { hid => { manage => [
-                [ $expected{virtual}[0], $expected{virtual}[0]{real}[0] ]
-                                                         ] } }, 'ld_start - add health check id';
-}
-{
-    set_default();
-    local @ld_read_l7vsadm_returns = ( { vid => { 'foo:bar' => { ip => 'foo' } } } );
-    local @get_virtual_id_str_returns = ('vid');
-    local @get_health_check_id_str_returns = ('hid');
-    local @fallback_find_returns = ();
-    local @get_ip_port_returns = ( 'foo:bar' );
-    $main::CONFIG{virtual} = [ {
-                protocol => 'tcp',
-                real => [ 'real' ],
-                             } ];
-    local %main::HEALTH_CHECK = ( hid => { manage => [ [ $main::CONFIG{virtual}[0], $main::CONFIG{virtual}[0]{real}[0] ] ] } );
-    my %expected = %main::GLOBAL;
-    $expected{virtual} = [ {
-                protocol => 'tcp',
-                real => [ 'real' ],
-                             } ];
-    ld_start();
-    is_deeply \%main::CONFIG, \%expected, 'ld_start - ignore exists health check';
-    is_deeply \%main::HEALTH_CHECK, { hid => { manage => [
-                [ $expected{virtual}[0], $expected{virtual}[0]{real}[0] ]
-                                                         ] } }, 'ld_start - ignore exists health check id';
-}
-{
-    set_default();
-    local @ld_read_l7vsadm_returns = ( {} );
-    $main::CONFIG{old_virtual} = [];
-    my %expected = %main::GLOBAL;
-    delete $expected{old_virtual};
-    ld_start();
-    is_deeply \%main::CONFIG, \%expected, 'ld_start - empty old virtual';
-}
-{
-    set_default();
-    local @ld_read_l7vsadm_returns = ( {} );
-    local @get_virtual_id_str_returns = ( 'vid' );
-    $main::CONFIG{old_virtual} = ['ov'];
-    my %expected = %main::GLOBAL;
-    delete $expected{old_virtual};
-    ld_start();
-    is_deeply \%main::CONFIG, \%expected, 'ld_start - not exists old virtual';
-}
-{
-    set_default();
-    local @ld_read_l7vsadm_returns = ( { vid => { ip => 'foo' } } );
-    local @get_virtual_id_str_returns = ( 'vid' );
-    $main::CONFIG{old_virtual} = ['ov'];
-    my %expected = %main::GLOBAL;
-    delete $expected{old_virtual};
-    ld_start();
-    is_deeply \%main::CONFIG, \%expected, 'ld_start - exists old virtual';
-##Warnning    is_deeply \@ld_delete_virtual_args, ['ov'], 'ld_start - exists old virtual delete';
-}
-#   - ld_stop
-{
-    set_default();
-    local @ld_read_l7vsadm_returns = ();
-    ld_stop();
-    is_deeply \%main::CONFIG, \%main::GLOBAL, 'ld_stop - l7vsadm no service';
-}
-{
-    set_default();
-    local @ld_read_l7vsadm_returns = ({});
-    $main::CONFIG{virtual} = [];
-    my %expected = %main::GLOBAL;
-    $expected{virtual} = [];
-    ld_stop();
-    is_deeply \%main::CONFIG, \%expected, 'ld_stop - empty virtual';
-}
-{
-    set_default();
-    local @ld_read_l7vsadm_returns = ({});
-    local @get_virtual_id_str_args = ();
-    local @get_virtual_id_str_returns = ('vid');
-    local @ld_delete_virtual_args = ();
-    $main::CONFIG{virtual} = ['virtual'];
-    my %expected = %main::GLOBAL;
-    $expected{virtual} = ['virtual'];
-    ld_stop();
-    is_deeply \%main::CONFIG, \%expected, 'ld_stop - no real';
-    is_deeply \@get_virtual_id_str_args, ['virtual'], 'ld_stop - get_virtual_id_str';
-    is_deeply \@ld_delete_virtual_args, ['virtual'], 'ld_stop - delete virtual';
-}
-{
-    set_default();
-    local @ld_read_l7vsadm_returns = ({ vid => { rid1 => 'real1', rid2 => 'real2' } });
-    local @get_virtual_id_str_args = ();
-    local @get_virtual_id_str_returns = ('vid');
-    local @ld_delete_virtual_args = ();
-    local @ld_delete_real_args = ();
-    $main::CONFIG{virtual} = ['virtual'];
-    my %expected = %main::GLOBAL;
-    $expected{virtual} = ['virtual'];
-    ld_stop();
-    is_deeply \%main::CONFIG, \%expected, 'ld_stop - exists real';
-    is_deeply \@get_virtual_id_str_args, ['virtual'], 'ld_stop - get_virtual_id_str';
-##    is_deeply \@ld_delete_real_args, ['virtual', 'real2', 'virtual', 'real1'], 'ld_stop - delete real';
-    is_deeply \@ld_delete_virtual_args, ['virtual'], 'ld_stop - delete virtual';
-}
-# test end
-#...............................................
-
-L7lib::comment_in();
-
-sub set_default {
-    %main::CONFIG = %main::GLOBAL;
-    %main::HEALTH_CHECK = ();
-}
-sub override {
-    *ld_read_l7vsadm = \&__ld_read_l7vsadm;
-    *get_virtual_id_str = \&__get_virtual_id_str;
-    *ld_add_virtual = \&__ld_add_virtual;
-    *ld_edit_virtual = \&__ld_edit_virtual;
-    *fallback_find = \&__fallback_find;
-    *get_ip_port = \&__get_ip_port;
-    *get_health_check_id_str = \&__get_health_check_id_str;
-    *ld_delete_virtual = \&__ld_delete_virtual;
-    *ld_delete_real = \&__ld_delete_real;
-    *ld_log = \&__ld_log;
-}
-sub __ld_read_l7vsadm {
-    push @ld_read_l7vsadm_args, @_;
-    return shift @ld_read_l7vsadm_returns;
-}
-sub __get_virtual_id_str {
-    push @get_virtual_id_str_args, @_;
-    return shift @get_virtual_id_str_returns;
-}
-sub __ld_add_virtual {
-    push @ld_add_virtual_args, @_;
-    return shift @ld_add_virtual_returns;
-}
-sub __ld_edit_virtual {
-    push @ld_edit_virtual_args, @_;
-    return shift @ld_edit_virtual_returns;
-}
-sub __fallback_find {
-    push @fallback_find_args, @_;
-    return shift @fallback_find_returns;
-}
-sub __get_ip_port {
-    push @get_ip_port_args, @_;
-    return shift @get_ip_port_returns;
-}
-sub __get_health_check_id_str {
-    push @get_health_check_id_str_args, @_;
-    return shift @get_health_check_id_str_returns;
-}
-sub __ld_delete_virtual {
-    push @ld_delete_virtual_args, @_;
-    return shift @ld_delete_virtual_returns;
-}
-sub __ld_delete_real {
-    push @ld_delete_real_args, @_;
-    return shift @ld_delete_real_returns;
-}
-sub __ld_log {
-}
diff --git a/l7directord/t/11_child_cmd.t b/l7directord/t/11_child_cmd.t
deleted file mode 100644 (file)
index 752a5a0..0000000
+++ /dev/null
@@ -1,89 +0,0 @@
-use strict;
-use warnings;
-no warnings qw(redefine once);
-use lib qw(t/lib lib);
-use subs qw(print);
-use Cwd;
-use L7lib;
-use Test::More tests => 6;
-use Socket;
-use Socket6;
-
-L7lib::chdir();
-L7lib::comment_out();
-require './l7directord';
-override();
-
-our @system_wrapper_args = ();
-our @system_wrapper_returns = ();
-#...............................................
-# test start
-#   - ld_cmd_children
-{
-    set_default();
-    local @system_wrapper_args = ();
-    local @system_wrapper_returns = ();
-    ld_cmd_children();
-    is_deeply \@system_wrapper_args, [], 'ld_cmd_children - no execute';
-}
-{
-    set_default();
-    local @system_wrapper_args = ();
-    local @system_wrapper_returns = ();
-    $main::CONFIG{execute} = { subconf1 => 1, subconf2 => 1 };
-    ld_cmd_children();
-    is_deeply \@system_wrapper_args, [], 'ld_cmd_children - exists execute, but no command';
-}
-{
-    set_default();
-    local @system_wrapper_args = ();
-    local @system_wrapper_returns = ();
-    $main::CONFIG{execute} = { subconf1 => 1, subconf2 => 1 };
-    ld_cmd_children('start');
-    is_deeply \@system_wrapper_args, ['l7directord subconf1 start', 'l7directord subconf2 start'],
-        'ld_cmd_children - exists execute and command';
-}
-{
-    set_default();
-    local @system_wrapper_args = ();
-    local @system_wrapper_returns = ();
-    $main::CONFIG{execute} = { subconf1 => 1, subconf2 => 1 };
-    ld_cmd_children('start', {});
-    is_deeply \@system_wrapper_args, [], 'ld_cmd_children - specified empty config';
-}
-{
-    set_default();
-    local @system_wrapper_args = ();
-    local @system_wrapper_returns = ();
-    my $execute = { subconf1 => 1, subconf2 => 1 };
-    ld_cmd_children(undef, $execute);
-    is_deeply \@system_wrapper_args, [], 'ld_cmd_children - specified config but not exist command';
-}
-{
-    set_default();
-    local @system_wrapper_args = ();
-    local @system_wrapper_returns = ();
-    my $execute = { subconf1 => 1, subconf2 => 1 };
-    ld_cmd_children('start', $execute);
-    is_deeply \@system_wrapper_args, ['l7directord subconf1 start', 'l7directord subconf2 start'],
-        'ld_cmd_children - specified config and exists command';
-}
-# test end
-#...............................................
-
-L7lib::comment_in();
-
-sub set_default {
-    %main::CONFIG = %main::GLOBAL;
-    $main::PROC_ENV{l7directord} = 'l7directord';
-}
-sub override {
-    *system_wrapper = \&__system_wrapper;
-    *ld_log = \&__ld_log;
-}
-sub __system_wrapper {
-    push @system_wrapper_args, @_;
-    return shift @system_wrapper_returns;
-}
-sub __ld_log {
-}
diff --git a/l7directord/t/12_main.t b/l7directord/t/12_main.t
deleted file mode 100644 (file)
index 29e9e2b..0000000
+++ /dev/null
@@ -1,149 +0,0 @@
-use strict;
-use warnings;
-no warnings qw(redefine once);
-use lib qw(t/lib lib);
-use subs qw(print);
-use Cwd;
-use L7lib;
-use Test::More tests => 29;
-use Socket;
-use Socket6;
-
-L7lib::chdir();
-L7lib::comment_out();
-require './l7directord';
-override();
-
-our $ld_start_called = 0;
-our $ld_stop_called = 0;
-our $reread_config_called = 0;
-our @check_child_process_args = ();
-our @check_child_process_returns = ();
-our @create_check_process_args = ();
-our @create_check_process_returns = ();
-our @sleep_and_check_signal_args = ();
-our @sleep_and_check_signal_returns = ();
-our $check_cfgfile_called = 0;
-our @check_cfgfile_returns = ();
-#...............................................
-# test start
-#   - ld_main
-{
-    set_default();
-    local @check_child_process_returns = ([]);
-    local @sleep_and_check_signal_returns = ('halt');
-    local $SIG{TERM} = sub { is $_[0], 'TERM', 'catch sigterm'; };
-    $main::HEALTH_CHECK{id}{pid} = $$;
-    ld_main();
-    is $ld_start_called, 1, 'ld_main - start called';
-    is $reread_config_called, 0, 'ld_main - reread_config called';
-    is $check_cfgfile_called, 0, 'ld_main - check_cfgfile called';
-    is $ld_stop_called, 1, 'ld_main - stop called';
-}
-{
-    set_default();
-    local @check_child_process_returns = (['id1', 'id2']);
-    local @sleep_and_check_signal_returns = ('halt');
-    local $SIG{TERM} = sub { is $_[0], 'TERM', 'catch sigterm'; };
-    $main::HEALTH_CHECK{id}{pid} = $$;
-    ld_main();
-    is $ld_start_called, 1, 'ld_main - start called';
-    is $reread_config_called, 0, 'ld_main - reread_config called';
-    is $ld_stop_called, 1, 'ld_main - stop called';
-    is $check_cfgfile_called, 0, 'ld_main - check_cfgfile called';
-    is_deeply \@create_check_process_args, ['id1', 'id2'], 'ld_main - create_check_process args';
-}
-{
-    set_default();
-    local @check_child_process_returns = (['id1', 'id2'], [], []);
-    local @sleep_and_check_signal_returns = (undef, undef , 'halt');
-    local @create_check_process_args = ();
-    local $SIG{TERM} = sub { is $_[0], 'TERM', 'catch sigterm'; };
-    $main::HEALTH_CHECK{id}{pid} = $$;
-    ld_main();
-    is $ld_start_called, 1, 'ld_main - start called';
-    is $reread_config_called, 0, 'ld_main - reread_config called';
-    is $ld_stop_called, 1, 'ld_main - stop called';
-    is $check_cfgfile_called, 2, 'ld_main - check_cfgfile called';
-    is_deeply \@create_check_process_args, ['id1', 'id2'], 'ld_main - create_check_process args';
-}
-{
-    set_default();
-    local @check_child_process_returns = (['id1', 'id2'], [], []);
-    local @sleep_and_check_signal_returns = (undef, 'reload' , 'halt');
-    local @create_check_process_args = ();
-    local $SIG{TERM} = sub { is $_[0], 'TERM', 'catch sigterm'; };
-    $main::HEALTH_CHECK{id}{pid} = $$;
-    ld_main();
-    is $ld_start_called, 1, 'ld_main - start called';
-    is $reread_config_called, 1, 'ld_main - reread_config called';
-    is $ld_stop_called, 1, 'ld_main - stop called';
-    is $check_cfgfile_called, 1, 'ld_main - check_cfgfile called';
-    is_deeply \@create_check_process_args, ['id1', 'id2'], 'ld_main - create_check_process args';
-}
-{
-    set_default();
-    local @check_child_process_returns = (['id1', 'id2'], [], []);
-    local @sleep_and_check_signal_returns = (undef, 'reload' , 'halt');
-    local @check_cfgfile_returns = (1);
-    local @create_check_process_args = ();
-    local $SIG{TERM} = sub { is $_[0], 'TERM', 'catch sigterm'; };
-    $main::HEALTH_CHECK{id}{pid} = $$;
-    ld_main();
-    is $ld_start_called, 1, 'ld_main - start called';
-    is $reread_config_called, 2, 'ld_main - reread_config called';
-    is $ld_stop_called, 1, 'ld_main - stop called';
-    is $check_cfgfile_called, 1, 'ld_main - check_cfgfile called';
-    is_deeply \@create_check_process_args, ['id1', 'id2'], 'ld_main - create_check_process args';
-}
-# test end
-#...............................................
-
-L7lib::comment_in();
-
-sub set_default {
-    %main::CONFIG = %main::GLOBAL;
-    %main::HEALTH_CHECK = ();
-    $ld_start_called = 0;
-    $ld_stop_called = 0;
-    $reread_config_called = 0;
-    $check_cfgfile_called = 0;
-}
-sub override {
-    *ld_start = \&__ld_start;
-    *check_child_process = \&__check_child_process;
-    *create_check_process = \&__create_check_process;
-    *sleep_and_check_signal = \&__sleep_and_check_signal;
-    *check_cfgfile = \&__check_cfgfile;
-    *reread_config = \&__reread_config;
-    *ld_stop = \&__ld_stop;
-    *ld_log = \&__ld_log;
-}
-sub __ld_start {
-    $ld_start_called++;
-}
-sub __check_child_process {
-    push @check_child_process_args, @_;
-    my $return = shift @check_child_process_returns;
-    return @$return;
-}
-sub __create_check_process {
-    push @create_check_process_args, @_;
-    return shift @create_check_process_returns;
-}
-sub __sleep_and_check_signal {
-    push @sleep_and_check_signal_args, @_;
-    return shift @sleep_and_check_signal_returns;
-}
-sub __check_cfgfile {
-    $check_cfgfile_called++;
-    return shift @check_cfgfile_returns;
-}
-sub __reread_config {
-    $reread_config_called++;
-}
-sub __ld_stop {
-    $ld_stop_called++;
-}
-sub __ld_log {
-}
diff --git a/l7directord/t/13_process.t b/l7directord/t/13_process.t
deleted file mode 100644 (file)
index 70d100f..0000000
+++ /dev/null
@@ -1,168 +0,0 @@
-use strict;
-use warnings;
-no warnings qw(redefine once);
-use lib qw(t/lib lib);
-use subs qw(print);
-use Cwd;
-use L7lib;
-use subs qw(fork chdir);
-use Test::More tests => 29;
-use Socket;
-use Socket6;
-
-L7lib::chdir();
-L7lib::comment_out();
-require './l7directord';
-override();
-
-our $health_check_called = 0;
-our $fork_return = -1;
-our $fork_called = 0;
-our $ld_exit_called = 0;
-our $setsid_return = 0;
-our $chdir_return = 0;
-#...............................................
-# test start
-#   - check_child_process
-{
-    set_default();
-    my @got = check_child_process();
-    is_deeply \@got, [], 'check_child_process - no process';
-}
-{
-    set_default();
-    %main::HEALTH_CHECK = ( id1 => { pid => $$ }, id2 => { pid => undef }, id3 => {pid => 100000 } );
-    my @got = check_child_process();
-    is_deeply \@got, ['id2', 'id3'], 'check_child_process - valid process, no process, invalid process';
-}
-#   - create_check_process
-{
-    set_default();
-    create_check_process();
-    is $fork_called, 0, 'create_check_process - no list';
-    is $health_check_called, 0, 'create_check_process - no list';
-}
-{
-    set_default();
-    $fork_return = -1;
-    create_check_process('id1', 'id2');
-    is $fork_called, 2, 'create_check_process - fork error';
-    is $health_check_called, 0, 'create_check_process - fork error';
-    is_deeply \%main::HEALTH_CHECK, {}, 'create_check_process - fork error';
-}
-{
-    set_default();
-    $fork_return = 0;
-    create_check_process('id1');
-    is $fork_called, 1, 'create_check_process - fork child';
-    is $health_check_called, 1, 'create_check_process - fork child';
-    is_deeply \%main::HEALTH_CHECK, { id1 => {} }, 'create_check_process - fork child';
-}
-{
-    set_default();
-    $fork_return = 1000;
-    create_check_process('id1', 'id2');
-    is $fork_called, 2, 'create_check_process - fork parent';
-    is $health_check_called, 0, 'create_check_process - fork parent';
-    is_deeply \%main::HEALTH_CHECK, { id1 => {pid => 1000}, id2 => {pid => 1000} }, 'create_check_process - fork parent';
-}
-#   - ld_daemon_become_child
-{
-    set_default();
-    local $fork_return = 0;
-    eval { ld_daemon_become_child(); };
-    is $fork_called, 1, 'ld_daemon_become_child - fork child';
-    is $ld_exit_called, 0, 'ld_daemon_become_child - become child';
-}
-{
-    set_default();
-    local $fork_return = 1;
-    eval { ld_daemon_become_child(); };
-    is $fork_called, 1, 'ld_daemon_become_child - fork parent';
-    is $ld_exit_called, 1, 'ld_daemon_become_child - parent ld_exit';
-}
-{
-    set_default();
-    local $fork_return = -1;
-    eval { ld_daemon_become_child(); };
-    is $fork_called, 1, 'ld_daemon_become_child - fork error';
-    is $ld_exit_called, 1, 'ld_daemon_become_child - fork error ld_exit';
-}
-#   - ld_daemon
-SKIP: {
-    skip "need root privilege", 2 if ($> != 0);
-    set_default();
-    local $fork_return = 0;
-    eval { ld_daemon(); };
-    is $fork_called, 2, 'ld_daemon - fork child 2 times';
-    is $ld_exit_called, 0, 'ld_daemon - become daemon';
-}
-{
-    set_default();
-    local $fork_return = 1;
-    eval { ld_daemon(); };
-    is $fork_called, 1, 'ld_daemon - fork parent';
-    is $ld_exit_called, 1, 'ld_daemon - cannot become daemon';
-}
-{
-    set_default();
-    local $fork_return = -1;
-    eval { ld_daemon(); };
-    is $fork_called, 1, 'ld_daemon - fork error';
-    is $ld_exit_called, 1, 'ld_daemon - cannot become daemon';
-}
-{
-    set_default();
-    local $fork_return = 0;
-    local $setsid_return = -1;
-    eval { ld_daemon(); };
-    is $fork_called, 1, 'ld_daemon - setsid error';
-    is $ld_exit_called, 1, 'ld_daemon - cannot become daemon';
-}
-{
-    set_default();
-    local $fork_return = 0;
-    local $chdir_return = -1;
-    eval { ld_daemon(); };
-    is $fork_called, 2, 'ld_daemon - chdir error';
-    is $ld_exit_called, 1, 'ld_daemon - cannot become daemon';
-}
-# test end
-#...............................................
-
-L7lib::comment_in();
-
-sub set_default {
-    %main::HEALTH_CHECK = ();
-    $health_check_called = 0;
-    $fork_return = -1;
-    $fork_called = 0;
-    $ld_exit_called = 0;
-}
-sub override {
-    *health_check = \&__health_check;
-    *ld_log = \&__ld_log;
-    *ld_exit = \&__ld_exit;
-    *fork = \&__fork;
-    *chdir = \&__chdir;
-    *POSIX::setsid = \&__setsid;
-}
-sub __health_check {
-    $health_check_called++;
-}
-sub __fork {
-    $fork_called++;
-    return $fork_return;
-}
-sub __ld_exit {
-    $ld_exit_called++;
-    die @_;
-}
-sub __setsid {
-    return $setsid_return;
-}
-sub __chdir {
-    return $chdir_return;
-}
-sub __ld_log {
-}
diff --git a/l7directord/t/14_health_check.t b/l7directord/t/14_health_check.t
deleted file mode 100644 (file)
index 3e02830..0000000
+++ /dev/null
@@ -1,218 +0,0 @@
-use strict;
-use warnings;
-no warnings qw(redefine once);
-use lib qw(t/lib lib);
-use subs qw(print);
-use Cwd;
-use L7lib;
-use subs qw(fork);
-use Test::More tests => 11;
-use Socket;
-use Socket6;
-
-L7lib::chdir();
-L7lib::comment_out();
-require './l7directord';
-override();
-
-our @check_func_args = ();
-our @check_func_returns = ();
-our @get_status_args = ();
-our @get_status_returns = ();
-our @get_ip_port_args = ();
-our @get_ip_port_returns = ();
-our @get_check_func_args = ();
-our @get_check_func_returns = ();
-our @service_set_args = ();
-our @service_set_returns = ();
-our @check_connect_args = ();
-our @check_connect_returns = ();
-our @sleep_and_check_signal_args = ();
-our @sleep_and_check_signal_returns = ();
-our $health_check_called = 0;
-#...............................................
-# test start
-#   - health_check
-{
-    set_default();
-    eval {
-        health_check();
-    };
-    is $@, "1\n", 'health_check - no virtual real list';
-}
-{
-    set_default();
-    local @get_status_returns = ();
-    local @get_check_func_returns = ( \&check_func );
-    my $v = {};
-    my $r = {};
-    eval {
-        health_check([ [] ]);
-    };
-    is $@, "2\n", 'health_check - no virtual real';
-}
-{
-    set_default();
-    local @get_status_returns = ();
-    local @get_ip_port_returns = ('ip:port');
-    local @get_check_func_returns = ( \&check_func );
-    local @check_func_returns = ( $main::SERVICE_DOWN );
-    local @sleep_and_check_signal_returns = ( 'halt' );
-    local @service_set_args = ();
-    my $v = {
-        checktype => 'connect',
-        checkcount => 1,
-        retryinterval => 5,
-        checkinterval => 8,
-             };
-    my $r = {};
-    eval {
-        health_check([ [$v, $r] ]);
-    };
-    is $@, "0\n", 'health_check - no virtual real';
-    is_deeply \@service_set_args, [ [[$v,$r]], 'down' ], 'health_check - service set down';
-}
-{
-    set_default();
-    local @get_status_returns = ();
-    local @get_ip_port_returns = ('ip:port');
-    local @get_check_func_returns = ( \&check_func );
-    local @check_func_returns = ( $main::SERVICE_UP,
-                                  $main::SERVICE_DOWN,
-                                  $main::SERVICE_DOWN,
-                                  $main::SERVICE_DOWN,
-                                );
-    local @sleep_and_check_signal_returns = ( 'run',
-                                              'run',
-                                              'run',
-                                              'halt',
-                                            );
-    local @service_set_args = ();
-    my $v = {
-        checktype => 'connect',
-        checkcount => 3,
-        retryinterval => 5,
-        checkinterval => 8,
-             };
-    my $r = {};
-    eval {
-        health_check([ [$v, $r] ]);
-    };
-    is $@, "0\n", 'health_check - no virtual real';
-    is_deeply \@service_set_args, [ [[$v,$r]], 'up', [[$v,$r]], 'down' ], 'health_check - service set up and down';
-    is_deeply \@sleep_and_check_signal_args, [8,1,5,1,5,1,8,1], 'health_check - sleep time';
-}
-{
-    set_default();
-    local @get_status_returns = ();
-    local @get_ip_port_returns = ('ip:port');
-    local @get_check_func_returns = ( \&check_func );
-    local @check_func_returns = ( $main::SERVICE_DOWN,
-                                  $main::SERVICE_DOWN,
-                                  $main::SERVICE_UP,
-                                  $main::SERVICE_DOWN,
-                                );
-    local @sleep_and_check_signal_returns = ( 'run',
-                                              'run',
-                                              'run',
-                                              'halt',
-                                            );
-    local @service_set_args = ();
-    my $v = {
-        checktype => 'connect',
-        checkcount => 3,
-        retryinterval => 5,
-        checkinterval => 8,
-             };
-    my $r = {};
-    eval {
-        health_check([ [$v, $r] ]);
-    };
-    is $@, "0\n", 'health_check - no virtual real';
-    is_deeply \@service_set_args, [ [[$v,$r]], 'up' ], 'health_check - service set up and down';
-    is_deeply \@sleep_and_check_signal_args, [5,1,5,1,8,1,5,1], 'health_check - sleep time';
-}
-{
-    set_default();
-    local $main::PROC_STAT{parent_pid} = 100000;
-    local @get_status_returns = ();
-    local @get_ip_port_returns = ('ip:port');
-    local @get_check_func_returns = ( \&check_func );
-    local @check_func_returns = ( $main::SERVICE_DOWN );
-    local @sleep_and_check_signal_returns = ( 'run' );
-    local @service_set_args = ();
-    my $v = {
-        checktype => 'connect',
-        checkcount => 3,
-        retryinterval => 5,
-        checkinterval => 8,
-             };
-    my $r = {};
-    eval {
-        health_check([ [$v, $r] ]);
-    };
-    is $@, "3\n", 'health_check - parent process is down';
-}
-# test end
-#...............................................
-
-L7lib::comment_in();
-
-sub check_func {
-    push @check_func_args, @_;
-    return shift @check_func_returns;
-}
-sub set_default {
-    $main::PROC_STAT{parent_pid} = $$;
-    @get_status_args = ();
-    @get_status_returns = ();
-    @get_check_func_args = ();
-    @get_check_func_returns = ();
-    @get_ip_port_args = ();
-    @get_ip_port_returns = ();
-    @service_set_args = ();
-    @service_set_returns = ();
-    @check_connect_args = ();
-    @check_connect_returns = ();
-    $health_check_called = 0;
-    @sleep_and_check_signal_args = ();
-    @sleep_and_check_signal_returns = ();
-}
-sub override {
-    *POSIX::_exit = \&__POSIX__exit;
-    *get_status = \&__get_status;
-    *get_check_func = \&__get_check_func;
-    *service_set = \&__service_set;
-    *check_connect = \&__check_connect;
-    *sleep_and_check_signal = \&__sleep_and_check_signal;
-    *ld_log = \&__ld_log;
-}
-sub __get_status {
-    push @get_status_args, @_;
-    return shift @get_status_returns;
-}
-sub __get_ip_port {
-    push @get_ip_port_args, @_;
-    return shift @get_ip_port_returns;
-}
-sub __get_check_func {
-    push @get_check_func_args, @_;
-    return shift @get_check_func_returns;
-}
-sub __service_set {
-    push @service_set_args, @_;
-    return shift @service_set_returns;
-}
-sub __check_connect {
-    push @get_status_args, @_;
-    return shift @get_status_returns;
-}
-sub __sleep_and_check_signal {
-    push @sleep_and_check_signal_args, @_;
-    return shift @sleep_and_check_signal_returns;
-}
-sub __POSIX__exit {
-    die "$_[0]\n";
-}
-sub __ld_log {
-}
diff --git a/l7directord/t/15_sleep.t b/l7directord/t/15_sleep.t
deleted file mode 100644 (file)
index 12903d8..0000000
+++ /dev/null
@@ -1,86 +0,0 @@
-use strict;
-use warnings;
-no warnings qw(redefine once);
-use lib qw(t/lib lib);
-use subs qw(print);
-use Cwd;
-use L7lib;
-use Test::More tests => 8;
-use Socket;
-use Socket6;
-
-L7lib::chdir();
-L7lib::comment_out();
-require './l7directord';
-override();
-
-#...............................................
-# test start
-#   - sleep_and_check_signal
-{
-    set_default();
-    my $sec = undef;
-    my $child = 0;
-    my $got = sleep_and_check_signal($sec, $child);
-    is $got, 'halt', 'sleep_and_check_signal - sleep time is undef';
-}
-{
-    set_default();
-    my $sec = 'ten';
-    my $child = 0;
-    my $got = sleep_and_check_signal($sec, $child);
-    is $got, 'halt', 'sleep_and_check_signal - sleep time is invalid';
-}
-{
-    set_default();
-    my $sec = 0;
-    my $child = 0;
-    my $got = sleep_and_check_signal($sec, $child);
-    is $got, 'run', 'sleep_and_check_signal - sleep time is zero';
-}
-{
-    set_default();
-    my $sec = 10;
-    my $child = 0;
-    local $main::PROC_STAT{reload} = 1;
-    my $got = sleep_and_check_signal($sec, $child);
-    is $got, 'reload', 'sleep_and_check_signal - sleep parent and reload';
-    is $main::PROC_STAT, undef, 'sleep_and_check_signal - reload flag off';
-}
-{
-    set_default();
-    my $sec = 10;
-    my $child = 0;
-    local $main::PROC_STAT{halt} = 1;
-    my $got = sleep_and_check_signal($sec, $child);
-    is $got, 'halt', 'sleep_and_check_signal - sleep parent and halt';
-}
-{
-    set_default();
-    my $sec = 10;
-    my $child = 1;
-    local $main::PROC_STAT{halt} = 1;
-    my $got = sleep_and_check_signal($sec, $child);
-    is $got, 'halt', 'sleep_and_check_signal - sleep child and halt';
-}
-{
-    set_default();
-    my $sec = 3;
-    my $child = 1;
-    local $main::PROC_STAT{reload} = 1;
-    my $got = sleep_and_check_signal($sec, $child);
-    is $got, 'run', 'sleep_and_check_signal - sleep child and ignore reload';
-}
-# test end
-#...............................................
-
-L7lib::comment_in();
-
-sub set_default {
-    $main::CONFIG_FILE{path} = 'config';
-}
-sub override {
-    *ld_log = \&__ld_log;
-}
-sub __ld_log {
-}
diff --git a/l7directord/t/16_check_func.t b/l7directord/t/16_check_func.t
deleted file mode 100644 (file)
index 325c30c..0000000
+++ /dev/null
@@ -1,338 +0,0 @@
-use strict;
-use warnings;
-no warnings qw(redefine once);
-use lib qw(t/lib lib);
-use subs qw(print);
-use Cwd;
-use L7lib;
-use Test::More tests => 34;
-use Socket;
-use Socket6;
-
-L7lib::chdir();
-L7lib::comment_out();
-require './l7directord';
-override();
-
-#...............................................
-# test start
-#   - get_check_func
-{
-    set_default();
-    my $got = get_check_func();
-    is $got, \&main::check_off, 'get_check_func - virtual is undef';
-}
-{
-    set_default();
-    my $v = {};
-    my $got = get_check_func($v);
-    is $got, \&main::check_none, 'get_check_func - no checktype';
-}
-{
-    set_default();
-    my $v = {
-        checktype => 'negotiate',
-        service => 'http'
-            };
-    my $got = get_check_func($v);
-    is $got, \&main::check_http, 'get_check_func - negotiate http';
-}
-{
-    set_default();
-    my $v = {
-        checktype => 'negotiate',
-        service => 'https'
-            };
-    my $got = get_check_func($v);
-    is $got, \&main::check_http, 'get_check_func - negotiate https';
-}
-{
-    set_default();
-    my $v = {
-        checktype => 'negotiate',
-        service => 'pop'
-            };
-    my $got = get_check_func($v);
-    is $got, \&main::check_pop, 'get_check_func - negotiate pop';
-}
-{
-    set_default();
-    my $v = {
-        checktype => 'negotiate',
-        service => 'imap'
-            };
-    my $got = get_check_func($v);
-    is $got, \&main::check_imap, 'get_check_func - negotiate imap';
-}
-{
-    set_default();
-    my $v = {
-        checktype => 'negotiate',
-        service => 'smtp'
-            };
-    my $got = get_check_func($v);
-    is $got, \&main::check_smtp, 'get_check_func - negotiate smtp';
-}
-{
-    set_default();
-    my $v = {
-        checktype => 'negotiate',
-        service => 'ftp'
-            };
-    my $got = get_check_func($v);
-    is $got, \&main::check_ftp, 'get_check_func - negotiate ftp';
-}
-{
-    set_default();
-    my $v = {
-        checktype => 'negotiate',
-        service => 'ldap'
-            };
-    my $got = get_check_func($v);
-    is $got, \&main::check_ldap, 'get_check_func - negotiate ldap';
-}
-{
-    set_default();
-    my $v = {
-        checktype => 'negotiate',
-        service => 'nntp'
-            };
-    my $got = get_check_func($v);
-    is $got, \&main::check_nntp, 'get_check_func - negotiate nntp';
-}
-{
-    set_default();
-    my $v = {
-        checktype => 'negotiate',
-        service => 'dns'
-            };
-    my $got = get_check_func($v);
-    is $got, \&main::check_dns, 'get_check_func - negotiate dns';
-}
-{
-    set_default();
-    my $v = {
-        checktype => 'negotiate',
-        service => 'sip'
-            };
-    my $got = get_check_func($v);
-    is $got, \&main::check_sip, 'get_check_func - negotiate sip';
-}
-{
-    set_default();
-    my $v = {
-        checktype => 'negotiate',
-        service => 'mysql'
-            };
-    my $got = get_check_func($v);
-    is $got, \&main::check_mysql, 'get_check_func - negotiate mysql';
-}
-{
-    set_default();
-    my $v = {
-        checktype => 'negotiate',
-        service => 'pgsql'
-            };
-    my $got = get_check_func($v);
-    is $got, \&main::check_pgsql, 'get_check_func - negotiate pgsql';
-}
-{
-    set_default();
-    my $v = {
-        checktype => 'negotiate',
-        service => 'unknown'
-            };
-    my $got = get_check_func($v);
-    is $got, \&main::check_none, 'get_check_func - negotiate unknown';
-}
-TODO:{
-    todo_skip 'should check closure.', 1 if 1;
-    set_default();
-    my $v = {
-        checktype => 'combined',
-        service => 'http'
-            };
-    my $got = get_check_func($v);
-    is $got, \&main::check_http, 'get_check_func - combined http';
-}
-TODO:{
-    todo_skip 'should check closure.', 1 if 1;
-    set_default();
-    my $v = {
-        checktype => 'combined',
-        service => 'https'
-            };
-    my $got = get_check_func($v);
-    is $got, \&main::check_http, 'get_check_func - combined https';
-}
-TODO:{
-    todo_skip 'should check closure.', 1 if 1;
-    set_default();
-    my $v = {
-        checktype => 'combined',
-        service => 'pop'
-            };
-    my $got = get_check_func($v);
-    is $got, \&main::check_pop, 'get_check_func - combined pop';
-}
-TODO:{
-    todo_skip 'should check closure.', 1 if 1;
-    set_default();
-    my $v = {
-        checktype => 'combined',
-        service => 'imap'
-            };
-    my $got = get_check_func($v);
-    is $got, \&main::check_imap, 'get_check_func - combined imap';
-}
-TODO:{
-    todo_skip 'should check closure.', 1 if 1;
-    set_default();
-    my $v = {
-        checktype => 'combined',
-        service => 'smtp'
-            };
-    my $got = get_check_func($v);
-    is $got, \&main::check_smtp, 'get_check_func - combined smtp';
-}
-TODO:{
-    todo_skip 'should check closure.', 1 if 1;
-    set_default();
-    my $v = {
-        checktype => 'combined',
-        service => 'ftp'
-            };
-    my $got = get_check_func($v);
-    is $got, \&main::check_ftp, 'get_check_func - combined ftp';
-}
-TODO:{
-    todo_skip 'should check closure.', 1 if 1;
-    set_default();
-    my $v = {
-        checktype => 'combined',
-        service => 'ldap'
-            };
-    my $got = get_check_func($v);
-    is $got, \&main::check_ldap, 'get_check_func - combined ldap';
-}
-TODO:{
-    todo_skip 'should check closure.', 1 if 1;
-    set_default();
-    my $v = {
-        checktype => 'combined',
-        service => 'nntp'
-            };
-    my $got = get_check_func($v);
-    is $got, \&main::check_nntp, 'get_check_func - combined nntp';
-}
-TODO:{
-    todo_skip 'should check closure.', 1 if 1;
-    set_default();
-    my $v = {
-        checktype => 'combined',
-        service => 'dns'
-            };
-    my $got = get_check_func($v);
-    is $got, \&main::check_dns, 'get_check_func - combined dns';
-}
-TODO:{
-    todo_skip 'should check closure.', 1 if 1;
-    set_default();
-    my $v = {
-        checktype => 'combined',
-        service => 'sip'
-            };
-    my $got = get_check_func($v);
-    is $got, \&main::check_sip, 'get_check_func - combined sip';
-}
-TODO:{
-    todo_skip 'should check closure.', 1 if 1;
-    set_default();
-    my $v = {
-        checktype => 'combined',
-        service => 'mysql'
-            };
-    my $got = get_check_func($v);
-    is $got, \&main::check_mysql, 'get_check_func - combined mysql';
-}
-TODO:{
-    todo_skip 'should check closure.', 1 if 1;
-    set_default();
-    my $v = {
-        checktype => 'combined',
-        service => 'pgsql'
-            };
-    my $got = get_check_func($v);
-    is $got, \&main::check_pgsql, 'get_check_func - combined pgsql';
-}
-{
-    set_default();
-    my $v = {
-        checktype => 'combined',
-        service => 'unknown'
-            };
-    my $got = get_check_func($v);
-    is $got, \&main::check_none, 'get_check_func - combined unknown';
-}
-{
-    set_default();
-    my $v = {
-        checktype => 'connect',
-            };
-    my $got = get_check_func($v);
-    is $got, \&main::check_ping, 'get_check_func - connect, but no protocol';
-}
-{
-    set_default();
-    my $v = {
-        checktype => 'connect',
-        protocol => 'udp',
-            };
-    my $got = get_check_func($v);
-    is $got, \&main::check_ping, 'get_check_func - connect, protocol is not tcp';
-}
-{
-    set_default();
-    my $v = {
-        checktype => 'connect',
-        protocol => 'tcp',
-            };
-    my $got = get_check_func($v);
-    is $got, \&main::check_connect, 'get_check_func - connect, protocol is tcp';
-}
-{
-    set_default();
-    my $v = {
-        checktype => 'ping',
-            };
-    my $got = get_check_func($v);
-    is $got, \&main::check_ping, 'get_check_func - ping';
-}
-{
-    set_default();
-    my $v = {
-        checktype => 'off',
-            };
-    my $got = get_check_func($v);
-    is $got, \&main::check_off, 'get_check_func - off';
-}
-{
-    set_default();
-    my $v = {
-        checktype => 'on',
-            };
-    my $got = get_check_func($v);
-    is $got, \&main::check_on, 'get_check_func - on';
-}
-# test end
-#...............................................
-
-L7lib::comment_in();
-
-sub set_default {
-}
-sub override {
-    *ld_log = \&__ld_log;
-}
-sub __ld_log {
-}
diff --git a/l7directord/t/17_http.t b/l7directord/t/17_http.t
deleted file mode 100644 (file)
index 74fcb0c..0000000
+++ /dev/null
@@ -1,377 +0,0 @@
-use strict;
-use warnings;
-no warnings qw(redefine once);
-use lib qw(t/lib lib);
-use subs qw(print);
-use Cwd;
-use L7lib;
-use Test::More tests => 23;
-use IO::Socket::INET;
-use Socket;
-use Socket6;
-
-L7lib::chdir();
-L7lib::comment_out();
-require './l7directord';
-override();
-
-#...............................................
-# test start
-#   - check_http
-SKIP: {
-    my $port = 63334;
-    my $sock = create_sock($port);
-    skip 'cannot create socket', 1 if !$sock;
-    my $pid = prepare_child($sock, "HTTP/1.0 200 OK\r\n\r\n");
-    set_default();
-    my $v = {negotiatetimeout => 1, service => 'http', httpmethod => 'GET'};
-    my $r = {url => "http://localhost:$port/", fail_counts => 0,
-             server => {ip => '127.0.0.1', port => $port }};
-    my $got = check_http($v, $r);
-    is $got, $main::SERVICE_UP, 'check_http - GET ok';
-    close_child($pid);
-    close $sock;
-}
-SKIP: {
-    my $port = 63334;
-    my $sock = create_sock($port);
-    skip 'cannot create socket', 1 if !$sock;
-    my $pid = prepare_child($sock, "HTTP/1.0 200 OK\r\n\r\n");
-    set_default();
-    my $v = {negotiatetimeout => 1, service => 'http', httpmethod => 'HEAD'};
-    my $r = {url => "http://localhost:$port/", fail_counts => 0,
-             server => {ip => '127.0.0.1', port => $port }};
-    my $got = check_http($v, $r);
-    is $got, $main::SERVICE_UP, 'check_http - HEAD ok';
-    close_child($pid);
-    close $sock;
-}
-{
-    set_default();
-    my $port = 63334;
-    my $v = {negotiatetimeout => 1, service => 'http', httpmethod => 'HEAD'};
-    my $r = {url => "http//localhost:$port/", fail_counts => 0,
-             server => {ip => '127.0.0.1', port => $port }};
-    my $got = check_http($v, $r);
-    is $got, $main::SERVICE_DOWN, 'check_http - URL error';
-}
-{
-    set_default();
-    my $port = 63334;
-    my $v = {negotiatetimeout => 1, service => 'http', httpmethod => 'HEAD'};
-    my $r = {url => "http://localhost:$port/", fail_counts => 0,
-             server => {ip => '127.0.0.1', port => $port }};
-    my $got = check_http($v, $r);
-    is $got, $main::SERVICE_DOWN, 'check_http - cannot connect';
-}
-SKIP: {
-    my $port = 63334;
-    my $sock = create_sock($port);
-    skip 'cannot create socket', 1 if !$sock;
-    my $pid = prepare_child($sock, "HTTP/1.0 200 OK\r\n\r\n", 2);
-    set_default();
-    my $v = {negotiatetimeout => 1, service => 'http', httpmethod => 'HEAD'};
-    my $r = {url => "http://localhost:$port/", fail_counts => 0,
-             server => {ip => '127.0.0.1', port => $port }};
-    my $got = check_http($v, $r);
-    is $got, $main::SERVICE_DOWN, 'check_http - timeout';
-    close_child($pid);
-    close $sock;
-}
-SKIP: {
-    my $port = 63334;
-    my $sock = create_sock($port);
-    skip 'cannot create socket', 1 if !$sock;
-    my $pid = prepare_child($sock, "HTTP/1.0 500 Internal Server Error\r\n\r\n");
-    set_default();
-    my $v = {negotiatetimeout => 1, service => 'http', httpmethod => 'HEAD'};
-    my $r = {url => "http://localhost:$port/", fail_counts => 0,
-             server => {ip => '127.0.0.1', port => $port }};
-    my $got = check_http($v, $r);
-    is $got, $main::SERVICE_DOWN, 'check_http - error response';
-    close_child($pid);
-    close $sock;
-}
-# https
-TODO: {
-#SKIP: {
-    todo_skip 'not ready https response', 1;
-    my $port = 63334;
-    my $sock = create_sock($port);
-    skip 'cannot create socket', 1 if !$sock;
-    my $pid = prepare_child($sock, "HTTP/1.0 200 OK\r\n\r\n");
-    set_default();
-    my $v = {negotiatetimeout => 1, service => 'https', httpmethod => 'GET'};
-    my $r = {url => "https://localhost:$port/", fail_counts => 0,
-             server => {ip => '127.0.0.1', port => $port }};
-    my $got = check_http($v, $r);
-    is $got, $main::SERVICE_UP, 'check_http - GET ok (https)';
-    close_child($pid);
-    close $sock;
-}
-TODO: {
-#SKIP: {
-    todo_skip 'not ready https response', 1;
-    my $port = 63334;
-    my $sock = create_sock($port);
-    skip 'cannot create socket', 1 if !$sock;
-    my $pid = prepare_child($sock, "HTTP/1.0 200 OK\r\n\r\n");
-    set_default();
-    my $v = {negotiatetimeout => 1, service => 'https', httpmethod => 'HEAD'};
-    my $r = {url => "https://localhost:$port/", fail_counts => 0,
-             server => {ip => '127.0.0.1', port => $port }};
-    my $got = check_http($v, $r);
-    is $got, $main::SERVICE_UP, 'check_http - HEAD ok (https)';
-    close_child($pid);
-    close $sock;
-}
-{
-    set_default();
-    my $port = 63334;
-    my $v = {negotiatetimeout => 1, service => 'https', httpmethod => 'HEAD'};
-    my $r = {url => "https//localhost:$port/", fail_counts => 0,
-             server => {ip => '127.0.0.1', port => $port }};
-    my $got = check_http($v, $r);
-    is $got, $main::SERVICE_DOWN, 'check_http - URL error (https)';
-}
-{
-    set_default();
-    my $port = 63334;
-    my $v = {negotiatetimeout => 1, service => 'https', httpmethod => 'HEAD'};
-    my $r = {url => "https://localhost:$port/", fail_counts => 0,
-             server => {ip => '127.0.0.1', port => $port }};
-    my $got = check_http($v, $r);
-    is $got, $main::SERVICE_DOWN, 'check_http - cannot connect (https)';
-}
-TODO: {
-#SKIP: {
-    todo_skip 'not ready https response', 1;
-    my $port = 63334;
-    my $sock = create_sock($port);
-    skip 'cannot create socket', 1 if !$sock;
-    my $pid = prepare_child($sock, "HTTP/1.0 200 OK\r\n\r\n", 2);
-    set_default();
-    my $v = {negotiatetimeout => 1, service => 'https', httpmethod => 'HEAD'};
-    my $r = {url => "https://localhost:$port/", fail_counts => 0,
-             server => {ip => '127.0.0.1', port => $port }};
-    my $got = check_http($v, $r);
-    is $got, $main::SERVICE_DOWN, 'check_http - timeout (https)';
-    close_child($pid);
-    close $sock;
-}
-TODO: {
-#SKIP: {
-    todo_skip 'not ready https response', 1;
-    my $port = 63334;
-    my $sock = create_sock($port);
-    skip 'cannot create socket', 1 if !$sock;
-    my $pid = prepare_child($sock, "HTTP/1.0 500 Internal Server Error\r\n\r\n");
-    set_default();
-    my $v = {negotiatetimeout => 1, service => 'https', httpmethod => 'HEAD'};
-    my $r = {url => "https://localhost:$port/", fail_counts => 0,
-             server => {ip => '127.0.0.1', port => $port }};
-    my $got = check_http($v, $r);
-    is $got, $main::SERVICE_DOWN, 'check_http - error response (https)';
-    close_child($pid);
-    close $sock;
-}
-#############################################################################
-### IPv6 Test
-SKIP: {
-    my $port = 63334;
-    my $sock = create_sock6($port);
-    skip 'cannot create socket6', 1 if !$sock;
-    my $pid = prepare_child($sock, "HTTP/1.0 200 OK\r\n\r\n");
-    set_default();
-    my $v = {negotiatetimeout => 1, service => 'http', httpmethod => 'GET'};
-    my $r = {url => "http://localhost:$port/", fail_counts => 0,
-             server => {ip => '[::1]', port => $port }};
-    my $got = check_http($v, $r);
-    is $got, $main::SERVICE_UP, 'check_http IPv6 - GET ok';
-    close_child($pid);
-    close $sock;
-}
-SKIP: {
-    my $port = 63334;
-    my $sock = create_sock6($port);
-    skip 'cannot create socket6', 1 if !$sock;
-    my $pid = prepare_child($sock, "HTTP/1.0 200 OK\r\n\r\n");
-    set_default();
-    my $v = {negotiatetimeout => 1, service => 'http', httpmethod => 'HEAD'};
-    my $r = {url => "http://localhost:$port/", fail_counts => 0,
-             server => {ip => '[::1]', port => $port }};
-    my $got = check_http($v, $r);
-    is $got, $main::SERVICE_UP, 'check_http IPv6 - HEAD ok';
-    close_child($pid);
-    close $sock;
-}
-{
-    set_default();
-    my $port = 63334;
-    my $v = {negotiatetimeout => 1, service => 'http', httpmethod => 'HEAD'};
-    my $r = {url => "http//localhost:$port/", fail_counts => 0,
-             server => {ip => '[::1]', port => $port }};
-    my $got = check_http($v, $r);
-    is $got, $main::SERVICE_DOWN, 'check_http IPv6 - URL error';
-}
-{
-    set_default();
-    my $port = 63334;
-    my $v = {negotiatetimeout => 1, service => 'http', httpmethod => 'HEAD'};
-    my $r = {url => "http://localhost:$port/", fail_counts => 0,
-             server => {ip => '[::1]', port => $port }};
-    my $got = check_http($v, $r);
-    is $got, $main::SERVICE_DOWN, 'check_http IPv6 - cannot connect';
-}
-SKIP: {
-    my $port = 63334;
-    my $sock = create_sock6($port);
-    skip 'cannot create socket6', 1 if !$sock;
-    my $pid = prepare_child($sock, "HTTP/1.0 200 OK\r\n\r\n", 2);
-    set_default();
-    my $v = {negotiatetimeout => 1, service => 'http', httpmethod => 'HEAD'};
-    my $r = {url => "http://localhost:$port/", fail_counts => 0,
-             server => {ip => '[::1]', port => $port }};
-    my $got = check_http($v, $r);
-    is $got, $main::SERVICE_DOWN, 'check_http IPv6 - timeout';
-    close_child($pid);
-    close $sock;
-}
-SKIP: {
-    my $port = 63334;
-    my $sock = create_sock6($port);
-    skip 'cannot create socket6', 1 if !$sock;
-    my $pid = prepare_child($sock, "HTTP/1.0 500 Internal Server Error\r\n\r\n");
-    set_default();
-    my $v = {negotiatetimeout => 1, service => 'http', httpmethod => 'HEAD'};
-    my $r = {url => "http://localhost:$port/", fail_counts => 0,
-             server => {ip => '[::1]', port => $port }};
-    my $got = check_http($v, $r);
-    is $got, $main::SERVICE_DOWN, 'check_http IPv6 - error response';
-    close_child($pid);
-    close $sock;
-}
-# https
-TODO: {
-#SKIP: {
-    todo_skip 'not ready https response', 1;
-    my $port = 63334;
-    my $sock = create_sock6($port);
-    skip 'cannot create socket6', 1 if !$sock;
-    my $pid = prepare_child($sock, "HTTP/1.0 200 OK\r\n\r\n");
-    set_default();
-    my $v = {negotiatetimeout => 1, service => 'https', httpmethod => 'GET'};
-    my $r = {url => "https://localhost:$port/", fail_counts => 0,
-             server => {ip => '[::1]', port => $port }};
-    my $got = check_http($v, $r);
-    is $got, $main::SERVICE_UP, 'check_http IPv6 - GET ok (https)';
-    close_child($pid);
-    close $sock;
-}
-TODO: {
-#SKIP: {
-    todo_skip 'not ready https response', 1;
-    my $port = 63334;
-    my $sock = create_sock6($port);
-    skip 'cannot create socket6', 1 if !$sock;
-    my $pid = prepare_child($sock, "HTTP/1.0 200 OK\r\n\r\n");
-    set_default();
-    my $v = {negotiatetimeout => 1, service => 'https', httpmethod => 'HEAD'};
-    my $r = {url => "https://localhost:$port/", fail_counts => 0,
-             server => {ip => '[::1]', port => $port }};
-    my $got = check_http($v, $r);
-    is $got, $main::SERVICE_UP, 'check_http IPv6 - HEAD ok (https)';
-    close_child($pid);
-    close $sock;
-}
-{
-    set_default();
-    my $port = 63334;
-    my $v = {negotiatetimeout => 1, service => 'https', httpmethod => 'HEAD'};
-    my $r = {url => "https//localhost:$port/", fail_counts => 0,
-             server => {ip => '[::1]', port => $port }};
-    my $got = check_http($v, $r);
-    is $got, $main::SERVICE_DOWN, 'check_http IPv6 - URL error (https)';
-}
-{
-    set_default();
-    my $port = 63334;
-    my $v = {negotiatetimeout => 1, service => 'https', httpmethod => 'HEAD'};
-    my $r = {url => "https://localhost:$port/", fail_counts => 0,
-             server => {ip => '[::1]', port => $port }};
-    my $got = check_http($v, $r);
-    is $got, $main::SERVICE_DOWN, 'check_http IPv6 - cannot connect (https)';
-}
-TODO: {
-#SKIP: {
-    todo_skip 'not ready https response', 1;
-    my $port = 63334;
-    my $sock = create_sock6($port);
-    skip 'cannot create socket6', 1 if !$sock;
-    my $pid = prepare_child($sock, "HTTP/1.0 200 OK\r\n\r\n", 2);
-    set_default();
-    my $v = {negotiatetimeout => 1, service => 'https', httpmethod => 'HEAD'};
-    my $r = {url => "https://localhost:$port/", fail_counts => 0,
-             server => {ip => '127.0.0.1', port => $port }};
-    my $got = check_http($v, $r);
-    is $got, $main::SERVICE_DOWN, 'check_http IPv6 - timeout (https)';
-    close_child($pid);
-    close $sock;
-}
-
-# test end
-#...............................................
-
-L7lib::comment_in();
-
-sub create_sock {
-    my $port = shift;
-    my $sock = IO::Socket::INET->new(
-        Listen => 5,
-        LocalAddr => 'localhost',
-        LocalPort => $port,
-        ReuseAddr => 1,
-        Proto => 'tcp');
-    return $sock;
-}
-sub create_sock6 {
-    my $port = shift;
-    my $sock = IO::Socket::INET->new(
-        Listen => 5,
-        LocalAddr => '::1',
-        LocalPort => $port,
-        ReuseAddr => 1,
-        Proto => 'tcp');
-    return $sock;
-}
-sub prepare_child {
-    my $sock = shift;
-    my $res = shift;
-    my $sleep = shift;
-    my $pid = fork();
-    if ($pid == 0) {
-        my $s = $sock->accept;
-        <$s>;
-        if ($sleep) { sleep $sleep; }
-        print $s $res;
-        close $s;
-        exit;
-    }
-    return $pid;
-}
-sub close_child {
-    my $pid = shift;
-    kill 15, $pid;
-    waitpid $pid, 0;
-}
-sub set_default {
-}
-sub override {
-    *ld_log = \&__ld_log;
-    *get_status = \&__get_status;
-}
-sub __get_status {
-    return $main::SERVICE_UP;
-}
-sub __ld_log {
-}
diff --git a/l7directord/t/18_smtp.t b/l7directord/t/18_smtp.t
deleted file mode 100644 (file)
index 38c4566..0000000
+++ /dev/null
@@ -1,123 +0,0 @@
-use strict;
-use warnings;
-no warnings qw(redefine once);
-use lib qw(t/lib lib);
-use subs qw(print);
-use Cwd;
-use L7lib;
-use Test::More tests => 5;
-use IO::Socket::INET;
-
-L7lib::chdir();
-L7lib::comment_out();
-require './l7directord';
-override();
-
-#...............................................
-# test start
-#   - check_smtp
-SKIP: {
-    my $port = 63334;
-    my $sock = create_sock($port);
-    skip 'cannot create socket', 1 if !$sock;
-    my $pid = prepare_child($sock, "220\n250\n");
-    set_default();
-    my $v = {negotiatetimeout => 3};
-    my $r = { server => {ip => '127.0.0.1', port => $port }, fail_counts => 0 };
-    my $got = check_smtp($v, $r);
-    is $got, $main::SERVICE_UP, 'check_smtp - connect ok';
-    close_child($pid);
-    close $sock;
-}
-SKIP: {
-    my $port = 63334;
-    my $sock = create_sock($port);
-    skip 'cannot create socket', 1 if !$sock;
-    my $pid = prepare_child($sock, "220\n250\n");
-    set_default();
-    my $v = {negotiatetimeout => 3, checkport => $port };
-    my $r = { server => {ip => '127.0.0.1', port => 10000 }, fail_counts => 0 };
-    my $got = check_smtp($v, $r);
-    is $got, $main::SERVICE_UP, 'check_smtp - checkport connect ok';
-    close_child($pid);
-    close $sock;
-}
-SKIP: {
-    my $port = 63334;
-    my $sock = create_sock($port);
-    skip 'cannot create socket', 1 if !$sock;
-    my $pid = prepare_child($sock, "420\n");
-    set_default();
-    my $v = {negotiatetimeout => 1, checkport => $port };
-    my $r = { server => {ip => '127.0.0.1', port => 10000 }, fail_counts => 0 };
-    my $got = check_smtp($v, $r);
-    is $got, $main::SERVICE_DOWN, 'check_smtp - error response';
-    close_child($pid);
-    close $sock;
-}
-SKIP: {
-    my $port = 63334;
-    my $sock = create_sock($port);
-    skip 'cannot create socket', 1 if !$sock;
-    my $pid = prepare_child($sock, "220\n250\n", 2);
-    set_default();
-    my $v = {negotiatetimeout => 1, checkport => $port };
-    my $r = { server => {ip => '127.0.0.1', port => 10000 }, fail_counts => 0 };
-    my $got = check_smtp($v, $r);
-    is $got, $main::SERVICE_DOWN, 'check_smtp - timeout';
-    close_child($pid);
-    close $sock;
-}
-{
-    my $port = 63334;
-    set_default();
-    my $v = {negotiatetimeout => 1, checkport => $port };
-    my $r = { server => {ip => '127.0.0.1', port => 10000 }, fail_counts => 0 };
-    my $got = check_smtp($v, $r);
-    is $got, $main::SERVICE_DOWN, 'check_smtp - connect error';
-}
-# test end
-#...............................................
-
-L7lib::comment_in();
-
-sub create_sock {
-    my $port = shift;
-    my $sock = IO::Socket::INET->new(
-        Listen => 5,
-        LocalAddr => 'localhost',
-        LocalPort => $port,
-        ReuseAddr => 1,
-        Proto => 'tcp');
-    return $sock;
-}
-sub prepare_child {
-    my $sock = shift;
-    my $res = shift;
-    my $sleep = shift;
-    my $pid = fork();
-    if ($pid == 0) {
-        my $s = $sock->accept;
-        if ($sleep) { sleep $sleep; }
-        print $s $res;
-        close $s;
-        exit;
-    }
-    return $pid;
-}
-sub close_child {
-    my $pid = shift;
-    kill 15, $pid;
-    waitpid $pid, 0;
-}
-sub set_default {
-}
-sub override {
-    *ld_log = \&__ld_log;
-    *get_status = \&__get_status;
-}
-sub __get_status {
-    return $main::SERVICE_UP;
-}
-sub __ld_log {
-}
diff --git a/l7directord/t/19_pop.t b/l7directord/t/19_pop.t
deleted file mode 100644 (file)
index 9a921c2..0000000
+++ /dev/null
@@ -1,144 +0,0 @@
-use strict;
-use warnings;
-no warnings qw(redefine once);
-use lib qw(t/lib lib);
-use subs qw(print);
-use Cwd;
-use L7lib;
-use Test::More tests => 6;
-use IO::Socket::INET;
-
-L7lib::chdir();
-L7lib::comment_out();
-require './l7directord';
-override();
-
-#...............................................
-# test start
-#   - check_pop
-#+OK ready  <24814.1224854220@HOST>
-#USER USERNAME
-#+OK Password required for USERNAME.
-#PASS PASSWORD
-#+OK USERNAME has 0 visible messages (0 hidden) in 0 octets.
-#-ERR [AUTH] Password supplied for "USERNAME" is incorrect.
-#QUIT
-#+OK Pop server at HOST signing off.
-SKIP: {
-    my $port = 63334;
-    my $sock = create_sock($port);
-    skip 'cannot create socket', 1 if !$sock;
-    my $pid = prepare_child($sock, "+OK ready\n+OK Password\n+OK user has 0 visible messages (0 hidden) in 0 octets.\n");
-    set_default();
-    my $v = {negotiatetimeout => 3};
-    my $r = { server => {ip => '127.0.0.1', port => $port }, fail_counts => 0 };
-    my $got = check_pop($v, $r);
-    is $got, $main::SERVICE_UP, 'check_pop - connect ok';
-    close_child($pid);
-    close $sock;
-}
-SKIP: {
-    my $port = 63334;
-    my $sock = create_sock($port);
-    skip 'cannot create socket', 1 if !$sock;
-    my $pid = prepare_child($sock, "+OK ready\n+OK Password\n+OK user has 0 visible messages (0 hidden) in 0 octets.\n");
-    set_default();
-    my $v = {negotiatetimeout => 3, checkport => $port};
-    my $r = { server => {ip => '127.0.0.1', port => 10000 }, fail_counts => 0 };
-    my $got = check_pop($v, $r);
-    is $got, $main::SERVICE_UP, 'check_pop - checkport connect ok';
-    close_child($pid);
-    close $sock;
-}
-SKIP: {
-    my $port = 63334;
-    my $sock = create_sock($port);
-    skip 'cannot create socket', 1 if !$sock;
-    my $pid = prepare_child($sock, "+OK ready\n+OK Password\n+OK user has 0 visible messages (0 hidden) in 0 octets.\n");
-    set_default();
-    my $v = {negotiatetimeout => 3, login => 'foo', passwd => 'bar'};
-    my $r = { server => {ip => '127.0.0.1', port => $port } , fail_counts => 0 };
-    my $got = check_pop($v, $r);
-    is $got, $main::SERVICE_UP, 'check_pop - login ok';
-    close_child($pid);
-    close $sock;
-}
-SKIP: {
-    my $port = 63334;
-    my $sock = create_sock($port);
-    skip 'cannot create socket', 1 if !$sock;
-    my $pid = prepare_child($sock, "+OK ready\n+OK Password\n+OK user has 0 visible messages (0 hidden) in 0 octets.\n", 2);
-    set_default();
-    my $v = {negotiatetimeout => 1, login => 'foo', passwd => 'bar'};
-    my $r = { server => {ip => '127.0.0.1', port => $port } , fail_counts => 0 };
-    my $got = check_pop($v, $r);
-    is $got, $main::SERVICE_DOWN, 'check_pop - timeout';
-    close_child($pid);
-    close $sock;
-}
-SKIP: {
-    my $port = 63334;
-    my $sock = create_sock($port);
-    skip 'cannot create socket', 1 if !$sock;
-    my $pid = prepare_child($sock, "+OK ready\n+OK Password\n-ERR\n");
-    set_default();
-    my $v = {negotiatetimeout => 1, login => 'foo', passwd => 'bar'};
-    my $r = { server => {ip => '127.0.0.1', port => $port } , fail_counts => 0 };
-    my $got = check_pop($v, $r);
-    is $got, $main::SERVICE_DOWN, 'check_pop - response error';
-    close_child($pid);
-    close $sock;
-}
-{
-    my $port = 63334;
-    set_default();
-    my $v = {negotiatetimeout => 1, checkport => $port };
-    my $r = { server => {ip => '127.0.0.1', port => 10000 }, fail_counts => 0 };
-    my $got = check_pop($v, $r);
-    is $got, $main::SERVICE_DOWN, 'check_pop - connect error';
-}
-# test end
-#...............................................
-
-L7lib::comment_in();
-
-sub create_sock {
-    my $port = shift;
-    my $sock = IO::Socket::INET->new(
-        Listen => 5,
-        LocalAddr => 'localhost',
-        LocalPort => $port,
-        ReuseAddr => 1,
-        Proto => 'tcp');
-    return $sock;
-}
-sub prepare_child {
-    my $sock = shift;
-    my $res = shift;
-    my $sleep = shift;
-    my $pid = fork();
-    if ($pid == 0) {
-        my $s = $sock->accept;
-        if ($sleep) { sleep $sleep; }
-        print $s $res;
-        close $s;
-        exit;
-    }
-    return $pid;
-}
-sub close_child {
-    my $pid = shift;
-    kill 15, $pid;
-    waitpid $pid, 0;
-}
-sub set_default {
-}
-sub override {
-    *ld_log = \&__ld_log;
-    *get_status = \&__get_status;
-}
-sub __get_status {
-    return $main::SERVICE_UP;
-}
-sub __ld_log {
-}
diff --git a/l7directord/t/20_imap.t b/l7directord/t/20_imap.t
deleted file mode 100644 (file)
index 9cc381f..0000000
+++ /dev/null
@@ -1,151 +0,0 @@
-use strict;
-use warnings;
-no warnings qw(redefine once);
-use lib qw(t/lib lib);
-use subs qw(print);
-use Cwd;
-use L7lib;
-use Test::More tests => 6;
-use IO::Socket::INET;
-
-L7lib::chdir();
-L7lib::comment_out();
-require './l7directord';
-override();
-
-our $module_error = 0;
-eval { require Mail::IMAPClient; };
-if ($@) {
-     $module_error = 1;
-}
-
-#...............................................
-# test start
-#   - check_imap
-SKIP: {
-    skip q{Can't locate Mail/IMAPClient.pm in @INC}, 1 if $module_error;
-    my $port = 63334;
-    my $sock = create_sock($port);
-    skip 'cannot create socket', 1 if !$sock;
-    my $pid = prepare_child($sock, ["* OK IMAP4 ready\n", "* BYE\n1 OK completed\n"]);
-    set_default();
-    my $v = { negotiatetimeout => 3, };
-    my $r = { server => {ip => '127.0.0.1', port => $port }, fail_counts => 0 };
-    my $got = check_imap($v, $r);
-    is $got, $main::SERVICE_UP, 'check_imap - connect ok';
-    close_child($pid);
-    close $sock;
-}
-SKIP: {
-    skip q{Can't locate Mail/IMAPClient.pm in @INC}, 1 if $module_error;
-    my $port = 63334;
-    my $sock = create_sock($port);
-    skip 'cannot create socket', 1 if !$sock;
-    my $pid = prepare_child($sock, ["* OK IMAP4 ready\n", "* BYE\n1 OK completed\n"]);
-    set_default();
-    my $v = { negotiatetimeout => 3, checkport => $port };
-    my $r = { server => {ip => '127.0.0.1', port => 10000 }, fail_counts => 0 };
-    my $got = check_imap($v, $r);
-    is $got, $main::SERVICE_UP, 'check_imap - checkport connect ok';
-    close_child($pid);
-    close $sock;
-}
-SKIP: {
-    skip q{Can't locate Mail/IMAPClient.pm in @INC}, 1 if $module_error;
-    my $port = 63334;
-    my $sock = create_sock($port);
-    skip 'cannot create socket', 1 if !$sock;
-    my $pid = prepare_child($sock, ["* OK IMAP4 ready\n", "1 OK LOGIN completed\n", "* BYE\n2 OK completed\n"]);
-    set_default();
-    my $v = {negotiatetimeout => 3, login => 'foo', passwd => 'bar'};
-    my $r = { server => {ip => '127.0.0.1', port => $port } , fail_counts => 0 };
-    my $got = check_imap($v, $r);
-    is $got, $main::SERVICE_UP, 'check_imap - login ok';
-    close_child($pid);
-    close $sock;
-}
-SKIP: {
-    skip q{Can't locate Mail/IMAPClient.pm in @INC}, 1 if $module_error;
-    my $port = 63334;
-    my $sock = create_sock($port);
-    skip 'cannot create socket', 1 if !$sock;
-    my $pid = prepare_child($sock, ["* OK IMAP4 ready\n", "1 OK LOGIN completed\n", "* BYE\n2 OK completed\n"], 5);
-    set_default();
-    my $v = {negotiatetimeout => 1, login => 'foo', passwd => 'bar'};
-    my $r = { server => {ip => '127.0.0.1', port => $port }, fail_counts => 0  };
-    my $got = check_imap($v, $r);
-    is $got, $main::SERVICE_DOWN, 'check_imap - timeout';
-    close_child($pid);
-    close $sock;
-}
-SKIP: {
-    skip q{Can't locate Mail/IMAPClient.pm in @INC}, 1 if $module_error;
-    my $port = 63334;
-    my $sock = create_sock($port);
-    skip 'cannot create socket', 1 if !$sock;
-    my $pid = prepare_child($sock, ["* OK IMAP4 ready\n", "1 NO LOGIN Error\n", "* BYE\n2 OK completed\n"]);
-    set_default();
-    my $v = {negotiatetimeout => 1, login => 'foo', passwd => 'bar'};
-    my $r = { server => {ip => '127.0.0.1', port => $port }, fail_counts => 0  };
-    my $got = check_imap($v, $r);
-    is $got, $main::SERVICE_DOWN, 'check_imap - response error';
-    close_child($pid);
-    close $sock;
-}
-SKIP: {
-    skip q{Can't locate Mail/IMAPClient.pm in @INC}, 1 if $module_error;
-    my $port = 63334;
-    set_default();
-    my $v = {negotiatetimeout => 1, checkport => $port };
-    my $r = { server => {ip => '127.0.0.1', port => 10000 }, fail_counts => 0 };
-    my $got = check_imap($v, $r);
-    is $got, $main::SERVICE_DOWN, 'check_imap - connect error';
-}
-# test end
-#...............................................
-
-L7lib::comment_in();
-
-sub create_sock {
-    my $port = shift;
-    my $sock = IO::Socket::INET->new(
-        Listen => 5,
-        LocalAddr => 'localhost',
-        LocalPort => $port,
-        ReuseAddr => 1,
-        Proto => 'tcp');
-    return $sock;
-}
-sub prepare_child {
-    my $sock = shift;
-    my $res = shift;
-    my $sleep = shift;
-    my $pid = fork();
-    if ($pid == 0) {
-        my $s = $sock->accept;
-        if ($sleep) { sleep $sleep; }
-        for (@$res) {
-            print $s $_;
-            <$s>;
-        }
-        close $s;
-        exit;
-    }
-    return $pid;
-}
-sub close_child {
-    my $pid = shift;
-    kill 15, $pid;
-    waitpid $pid, 0;
-}
-sub set_default {
-}
-sub override {
-    *ld_log = \&__ld_log;
-    *get_status = \&__get_status;
-}
-sub __get_status {
-    return $main::SERVICE_UP;
-}
-sub __ld_log {
-}
diff --git a/l7directord/t/21_ldap.t b/l7directord/t/21_ldap.t
deleted file mode 100644 (file)
index 72b9893..0000000
+++ /dev/null
@@ -1,224 +0,0 @@
-use strict;
-use warnings;
-no warnings qw(redefine once);
-use lib qw(t/lib lib);
-use subs qw(print);
-use Cwd;
-use L7lib;
-use Test::More tests => 7;
-use IO::Socket::INET;
-use IO::Handle;
-
-L7lib::chdir();
-L7lib::comment_out();
-require './l7directord';
-override();
-
-our $module_error = 0;
-eval { require Net::LDAP; };
-if ($@) {
-    $module_error = 1;
-}
-
-#...............................................
-# test start
-#   - check_ldap
-SKIP: {
-    skip q{Can't locate Net/LDAP.pm in @INC}, 1 if $module_error;
-    my $port = 63334;
-    my $sock = create_sock($port);
-    skip 'cannot create socket', 1 if !$sock;
-    # 30 0C 02 01 01 61 07 0A 01 00 04 00 04 00 __ __ 0....a........
-    my $normal_response = pack 'H*', '300C02010161070A010004000400';
-    my $pid = prepare_child($sock, [$normal_response]);
-    set_default();
-    my $v = { negotiatetimeout => 3, };
-    my $r = { server => {ip => '127.0.0.1', port => $port }, fail_counts => 0 };
-    my $got = check_ldap($v, $r);
-    is $got, $main::SERVICE_UP, 'check_ldap - connect ok';
-    close_child($pid);
-    close $sock;
-}
-SKIP: {
-    skip q{Can't locate Net/LDAP.pm in @INC}, 1 if $module_error;
-    my $port = 63334;
-    my $sock = create_sock($port);
-    skip 'cannot create socket', 1 if !$sock;
-    # 30 0C 02 01 01 61 07 0A 01 00 04 00 04 00 __ __ 0....a........
-    my $normal_response = pack 'H*', '300C02010161070A010004000400';
-    my $pid = prepare_child($sock, [$normal_response]);
-    set_default();
-    my $v = { negotiatetimeout => 3, checkport => $port };
-    my $r = { server => {ip => '127.0.0.1', port => 10000 }, fail_counts => 0 };
-    my $got = check_ldap($v, $r);
-    is $got, $main::SERVICE_UP, 'check_ldap - checkport connect ok';
-    close_child($pid);
-    close $sock;
-}
-SKIP: {
-    skip q{Can't locate Net/LDAP.pm in @INC}, 1 if $module_error;
-    my $port = 63334;
-    my $sock = create_sock($port);
-    skip 'cannot create socket', 1 if !$sock;
-    # 30 0C 02 01 01 61 07 0A 01 00 04 00 04 00 __ __ 0....a........
-    my $normal_response = pack 'H*', '300C02010161070A010004000400';
-    # 30 64 02 01 02 64 5F 04 11 64 63 3D 65 78 61 6D 0d...d_..dc=exam    
-    # 70 6C 65 2C 64 63 3D 63 6F 6D 30 4A 30 27 04 0B ple,dc=com0J0'..    
-    # 6F 62 6A 65 63 74 43 6C 61 73 73 31 18 04 08 64 objectClass1...d    
-    # 63 4F 62 6A 65 63 74 04 0C 6F 72 67 61 6E 69 7A cObject..organiz    
-    # 61 74 69 6F 6E 30 0F 04 02 64 63 31 09 04 07 65 ation0...dc1...e    
-    # 78 61 6D 70 6C 65 30 0E 04 01 6F 31 09 04 07 65 xample0...o1...e    
-    # 78 61 6D 70 6C 65 __ __ __ __ __ __ __ __ __ __ xample              
-    my $search_response = pack 'H*',
-        '3064020102645F041164633D6578616D706C652C64633D636F6D304A3027040B' .
-        '6F626A656374436C6173733118040864634F626A656374040C6F7267616E697A' .
-        '6174696F6E300F04026463310904076578616D706C65300E04016F3109040765' .
-        '78616D706C65';
-    my $pid = prepare_child($sock, [$normal_response, $search_response]);
-    set_default();
-    my $v = {negotiatetimeout => 3, };
-    my $r = { server => {ip => '127.0.0.1', port => $port}, request => 'dc=example,dc=com' , fail_counts => 0 };
-    my $got = check_ldap($v, $r);
-    is $got, $main::SERVICE_UP, 'check_ldap - search ok';
-    close_child($pid);
-    close $sock;
-}
-SKIP: {
-    skip q{Can't locate Net/LDAP.pm in @INC}, 1 if $module_error;
-    my $port = 63334;
-    my $sock = create_sock($port);
-    skip 'cannot create socket', 1 if !$sock;
-    # 30 0C 02 01 01 61 07 0A 01 00 04 00 04 00 __ __ 0....a........
-    my $normal_response = pack 'H*', '300C02010161070A010004000400';
-    # 30 64 02 01 02 64 5F 04 11 64 63 3D 65 78 61 6D 0d...d_..dc=exam    
-    # 70 6C 65 2C 64 63 3D 63 6F 6D 30 4A 30 27 04 0B ple,dc=com0J0'..    
-    # 6F 62 6A 65 63 74 43 6C 61 73 73 31 18 04 08 64 objectClass1...d    
-    # 63 4F 62 6A 65 63 74 04 0C 6F 72 67 61 6E 69 7A cObject..organiz    
-    # 61 74 69 6F 6E 30 0F 04 02 64 63 31 09 04 07 65 ation0...dc1...e    
-    # 78 61 6D 70 6C 65 30 0E 04 01 6F 31 09 04 07 65 xample0...o1...e    
-    # 78 61 6D 70 6C 65 __ __ __ __ __ __ __ __ __ __ xample              
-    my $search_response = pack 'H*',
-        '3064020102645F041164633D6578616D706C652C64633D636F6D304A3027040B' .
-        '6F626A656374436C6173733118040864634F626A656374040C6F7267616E697A' .
-        '6174696F6E300F04026463310904076578616D706C65300E04016F3109040765' .
-        '78616D706C65';
-    my $pid = prepare_child($sock, [$normal_response, $search_response]);
-    set_default();
-    my $v = {negotiatetimeout => 3};
-    my $r = { server => {ip => '127.0.0.1', port => $port}, request => 'dc=example,dc=com', receive => 'example' , fail_counts => 0 };
-    my $got = check_ldap($v, $r);
-    is $got, $main::SERVICE_UP, 'check_ldap - response check ok';
-    close_child($pid);
-    close $sock;
-}
-SKIP: {
-    skip q{Can't locate Net/LDAP.pm in @INC}, 1 if $module_error;
-    my $port = 63334;
-    my $sock = create_sock($port);
-    skip 'cannot create socket', 1 if !$sock;
-    # 30 0C 02 01 01 61 07 0A 01 00 04 00 04 00 __ __ 0....a........
-    my $normal_response = pack 'H*', '300C02010161070A010004000400';
-    my $pid = prepare_child($sock, [$normal_response], 2);
-    set_default();
-    my $v = {negotiatetimeout => 1};
-    my $r = { server => {ip => '127.0.0.1', port => $port}, request => 'dc=example,dc=com', receive => 'example' , fail_counts => 0 };
-    my $got = check_ldap($v, $r);
-    is $got, $main::SERVICE_DOWN, 'check_ldap - timeout';
-    close_child($pid);
-    close $sock;
-}
-SKIP: {
-    skip q{Can't locate Net/LDAP.pm in @INC}, 1 if $module_error;
-    my $port = 63334;
-    my $sock = create_sock($port);
-    skip 'cannot create socket', 1 if !$sock;
-    # 30 0C 02 01 01 61 07 0A 01 00 04 00 04 00 __ __ 0....a........
-    my $normal_response = pack 'H*', '300C02010161070A010004000400';
-    # 30 64 02 01 02 64 5F 04 11 64 63 3D 65 78 61 6D 0d...d_..dc=exam    
-    # 70 6C 65 2C 64 63 3D 63 6F 6D 30 4A 30 27 04 0B ple,dc=com0J0'..    
-    # 6F 62 6A 65 63 74 43 6C 61 73 73 31 18 04 08 64 objectClass1...d    
-    # 63 4F 62 6A 65 63 74 04 0C 6F 72 67 61 6E 69 7A cObject..organiz    
-    # 61 74 69 6F 6E 30 0F 04 02 64 63 31 09 04 07 65 ation0...dc1...e    
-    # 78 61 6D 70 6C 65 30 0E 04 01 6F 31 09 04 07 65 xample0...o1...e    
-    # 78 61 6D 70 6C 65 __ __ __ __ __ __ __ __ __ __ xample              
-    my $search_response = pack 'H*',
-        '3064020102645F041164633D6578616D706C652C64633D636F6D304A3027040B' .
-        '6F626A656374436C6173733118040864634F626A656374040C6F7267616E697A' .
-        '6174696F6E300F04026463310904076578616D706C65300E04016F3109040765' .
-        '78616D706C65';
-    my $pid = prepare_child($sock, [$normal_response, $search_response]);
-    set_default();
-    my $v = {negotiatetimeout => 3};
-    my $r = { server => {ip => '127.0.0.1', port => $port}, request => 'dc=example,dc=com', receive => 'foo' , fail_counts => 0 };
-    my $got = check_ldap($v, $r);
-    is $got, $main::SERVICE_DOWN, 'check_ldap - response error';
-    close_child($pid);
-    close $sock;
-}
-SKIP: {
-    skip q{Can't locate Net/LDAP.pm in @INC}, 1 if $module_error;
-    my $port = 63334;
-    set_default();
-    my $v = {negotiatetimeout => 1, checkport => $port };
-    my $r = { server => {ip => '127.0.0.1', port => 10000 }, fail_counts => 0 };
-    my $got = check_ldap($v, $r);
-    is $got, $main::SERVICE_DOWN, 'check_ldap - connect error';
-}
-# test end
-#...............................................
-
-L7lib::comment_in();
-
-sub create_sock {
-    my $port = shift;
-    my $sock = IO::Socket::INET->new(
-        Listen => 5,
-        LocalAddr => 'localhost',
-        LocalPort => $port,
-        ReuseAddr => 1,
-        Proto => 'tcp');
-    return $sock;
-}
-sub prepare_child {
-    my $sock = shift;
-    my $res = shift;
-    my $sleep = shift;
-    my $pid = fork();
-    if ($pid == 0) {
-        my $s = $sock->accept;
-        $s->autoflush(1);
-        if ($sleep) { sleep $sleep; }
-        for my $response (@$res) {
-            my $length;
-            read $s, $length, 1;
-            read $s, $length, 1;
-            $length = unpack('C', $length);
-            #print "read length: $length\n";
-            my $req;
-            read $s, $req, $length;
-            #print "read: ", unpack('H*', $req), "\n";
-            my $num = substr $req, 2, 1;
-            $response =~ s/^(....)./$1$num/;
-            print $s $response;
-        }
-        close $s;
-        exit;
-    }
-    return $pid;
-}
-sub close_child {
-    my $pid = shift;
-    kill 15, $pid;
-    waitpid $pid, 0;
-}
-sub set_default {
-}
-sub override {
-    *ld_log = \&__ld_log;
-    *get_status = \&__get_status;
-}
-sub __get_status {
-    return $main::SERVICE_UP;
-}
-sub __ld_log {
-}
diff --git a/l7directord/t/22_nntp.t b/l7directord/t/22_nntp.t
deleted file mode 100644 (file)
index 976a4c0..0000000
+++ /dev/null
@@ -1,196 +0,0 @@
-use strict;
-use warnings;
-no warnings qw(redefine once);
-use lib qw(t/lib lib);
-use subs qw(print);
-use Cwd;
-use L7lib;
-use Test::More tests => 9;
-use IO::Socket::INET;
-use Socket;
-use Socket6;
-
-L7lib::chdir();
-L7lib::comment_out();
-require './l7directord';
-override();
-
-#...............................................
-# test start
-#   - check_nntp
-SKIP: {
-    my $port = 63334;
-    my $sock = create_sock($port);
-    skip 'cannot create socket', 1 if !$sock;
-    my $pid = prepare_child($sock, ["200\n"]);
-    set_default();
-    my $v = { negotiatetimeout => 3};
-    my $r = { server => {ip => '127.0.0.1', port => $port }, fail_counts => 0 };
-    my $got = check_nntp($v, $r);
-    is $got, $main::SERVICE_UP, 'check_nntp - response ok';
-    close_child($pid);
-    close $sock;
-}
-SKIP: {
-    my $port = 63334;
-    my $sock = create_sock($port);
-    skip 'cannot create socket', 1 if !$sock;
-    my $pid = prepare_child($sock, ["200\n"]);
-    set_default();
-    my $v = { negotiatetimeout => 3, checkport => $port };
-    my $r = { server => {ip => '127.0.0.1', port => 10000 }, fail_counts => 0 };
-    my $got = check_nntp($v, $r);
-    is $got, $main::SERVICE_UP, 'check_nntp - checkport response ok';
-    close_child($pid);
-    close $sock;
-}
-SKIP: {
-    my $port = 63334;
-    my $sock = create_sock($port);
-    skip 'cannot create socket', 1 if !$sock;
-    my $pid = prepare_child($sock, ["200\n"], 2);
-    set_default();
-    my $v = {negotiatetimeout => 1};
-    my $r = { server => {ip => '127.0.0.1', port => $port } , fail_counts => 0 };
-    my $got = check_nntp($v, $r);
-    is $got, $main::SERVICE_DOWN, 'check_nntp - timeout';
-    close_child($pid);
-    close $sock;
-}
-SKIP: {
-    my $port = 63334;
-    my $sock = create_sock($port);
-    skip 'cannot create socket', 1 if !$sock;
-    my $pid = prepare_child($sock, ["500\n"]);
-    set_default();
-    my $v = {negotiatetimeout => 1};
-    my $r = { server => {ip => '127.0.0.1', port => $port } , fail_counts => 0 };
-    my $got = check_nntp($v, $r);
-    is $got, $main::SERVICE_DOWN, 'check_nntp - response error';
-    close_child($pid);
-    close $sock;
-}
-{
-    my $port = 63334;
-    set_default();
-    my $v = {negotiatetimeout => 1, checkport => $port };
-    my $r = { server => {ip => '127.0.0.1', port => 10000 }, fail_counts => 0 };
-    my $got = check_nntp($v, $r);
-    is $got, $main::SERVICE_DOWN, 'check_nntp - connect error';
-}
-###################################
-### IPv6 TestPattern
-SKIP: {
-    my $port = 63334;
-    my $sock = create_sock6($port);
-    skip 'cannot create socket', 1 if !$sock;
-    my $pid = prepare_child($sock, ["200\n"]);
-    set_default();
-    my $v = { negotiatetimeout => 3};
-    my $r = { server => {ip => '[::1]', port => $port }, fail_counts => 0 };
-    my $got = check_nntp($v, $r);
-    is $got, $main::SERVICE_UP, 'check_nntp - IPv6  - response ok';
-    close_child($pid);
-    close $sock;
-}
-SKIP: {
-    my $port = 63334;
-    my $sock = create_sock6($port);
-    skip 'cannot create socket', 1 if !$sock;
-    my $pid = prepare_child($sock, ["200\n"]);
-    set_default();
-    my $v = { negotiatetimeout => 3, checkport => $port };
-    my $r = { server => {ip => '[::1]', port => 10000 }, fail_counts => 0 };
-    my $got = check_nntp($v, $r);
-    is $got, $main::SERVICE_UP, 'check_nntp - IPv6  - checkport response ok';
-    close_child($pid);
-    close $sock;
-}
-SKIP: {
-    my $port = 63334;
-    my $sock = create_sock6($port);
-    skip 'cannot create socket', 1 if !$sock;
-    my $pid = prepare_child($sock, ["200\n"], 2);
-    set_default();
-    my $v = {negotiatetimeout => 1};
-    my $r = { server => {ip => '[::1]', port => $port } , fail_counts => 0 };
-    my $got = check_nntp($v, $r);
-    is $got, $main::SERVICE_DOWN, 'check_nntp - IPv6  - timeout';
-    close_child($pid);
-    close $sock;
-}
-SKIP: {
-    my $port = 63334;
-    my $sock = create_sock6($port);
-    skip 'cannot create socket', 1 if !$sock;
-    my $pid = prepare_child($sock, ["500\n"]);
-    set_default();
-    my $v = {negotiatetimeout => 1};
-    my $r = { server => {ip => '[::1]', port => $port } , fail_counts => 0 };
-    my $got = check_nntp($v, $r);
-    is $got, $main::SERVICE_DOWN, 'check_nntp - IPv6 - response error';
-    close_child($pid);
-    close $sock;
-}
-
-
-# test end
-#...............................................
-
-L7lib::comment_in();
-
-sub create_sock {
-    my $port = shift;
-    my $sock = IO::Socket::INET->new(
-        Listen => 5,
-        LocalAddr => 'localhost',
-        LocalPort => $port,
-        ReuseAddr => 1,
-        Proto => 'tcp');
-    return $sock;
-}
-
-sub create_sock6 {
-    my $port = shift;
-    my $sock = IO::Socket::INET6->new(
-        Listen => 5,
-        LocalAddr => '::1',
-        LocalPort => $port,
-        ReuseAddr => 1,
-        Proto => 'tcp');
-    return $sock;
-}
-
-sub prepare_child {
-    my $sock = shift;
-    my $res = shift;
-    my $sleep = shift;
-    my $pid = fork();
-    if ($pid == 0) {
-        my $s = $sock->accept;
-        if ($sleep) { sleep $sleep; }
-        for (@$res) {
-            print $s $_;
-            <$s>;
-        }
-        close $s;
-        exit;
-    }
-    return $pid;
-}
-sub close_child {
-    my $pid = shift;
-    kill 15, $pid;
-    waitpid $pid, 0;
-}
-sub set_default {
-}
-sub override {
-    *ld_log = \&__ld_log;
-    *get_status = \&__get_status;
-}
-sub __get_status {
-    return $main::SERVICE_UP;
-}
-sub __ld_log {
-}
diff --git a/l7directord/t/23_sql.t b/l7directord/t/23_sql.t
deleted file mode 100644 (file)
index fb026b5..0000000
+++ /dev/null
@@ -1,322 +0,0 @@
-use strict;
-use warnings;
-no warnings qw(redefine once);
-use lib qw(t/lib lib);
-use subs qw(print);
-use Cwd;
-use L7lib;
-use Test::More tests => 14;
-use IO::Socket::INET;
-
-L7lib::chdir();
-L7lib::comment_out();
-require './l7directord';
-override();
-
-our $dbi_error = 0;
-eval { require DBI; };
-if ($@) {
-    $dbi_error = 1;
-}
-our $pg_error = 0;
-eval { require DBD::Pg; };
-if ($@) {
-    $pg_error = 1;
-}
-our $mysql_error = 0;
-eval { require DBD::mysql; };
-if ($@) {
-    $mysql_error = 1;
-}
-
-#...............................................
-# test start
-#   - check_sql
-#   - check_mysql
-TODO: {
-    todo_skip q{Can't locate DBI.pm in @INC}, 1 if $dbi_error;
-    todo_skip q{Can't locate DBD/mysql.pm in @INC}, 1 if $mysql_error;
-    todo_skip 'not ready mysql response', 1;
-#SKIP: {
-    my $port = 63334;
-    my $sock = create_sock($port);
-    skip 'cannot create socket', 1 if !$sock;
-    my $response = ''; # TODO create mysql response
-    my $pid = prepare_child($sock, [$response]);
-    set_default();
-    my $v = { server => {ip => '127.0.0.1'}, negotiatetimeout => 3, login => 'postgres', passwd => '', database => 'template1' };
-    my $r = { server => {ip => '127.0.0.1', port => $port }, fail_counts => 0 };
-    my $got = check_mysql($v, $r);
-    is $got, $main::SERVICE_UP, 'check_mysql - connect ok';
-    close_child($pid);
-    close $sock;
-}
-TODO: {
-    todo_skip q{Can't locate DBI.pm in @INC}, 1 if $dbi_error;
-    todo_skip q{Can't locate DBD/mysql.pm in @INC}, 1 if $mysql_error;
-    todo_skip 'not ready mysql response', 1;
-#SKIP: {
-    my $port = 63334;
-    my $sock = create_sock($port);
-    skip 'cannot create socket', 1 if !$sock;
-    my $response = ''; # TODO create mysql response
-    my $pid = prepare_child($sock, [$response]);
-    set_default();
-    my $v = { server => {ip => '127.0.0.1'}, checkport => $port, negotiatetimeout => 3, login => 'postgres', passwd => '', database => 'template1' };
-    my $r = { server => {ip => '127.0.0.1', port => 10000 }, fail_counts => 0 };
-    my $got = check_mysql($v, $r);
-    is $got, $main::SERVICE_UP, 'check_mysql - checkport connect ok';
-    close_child($pid);
-    close $sock;
-}
-TODO: {
-    todo_skip q{Can't locate DBI.pm in @INC}, 1 if $dbi_error;
-    todo_skip q{Can't locate DBD/mysql.pm in @INC}, 1 if $mysql_error;
-    todo_skip 'not ready mysql response', 1;
-#SKIP: {
-    my $port = 63334;
-    my $sock = create_sock($port);
-    skip 'cannot create socket', 1 if !$sock;
-    my $response = ''; # TODO create mysql response
-    my $query_response = ''; # TODO create mysql query response
-    my $pid = prepare_child($sock, [$response, $query_response]);
-    set_default();
-    my $v = { server => {ip => '127.0.0.1'}, negotiatetimeout => 3, login => 'postgres', passwd => '', database => 'template1' };
-    my $r = { server => {ip => '127.0.0.1', port => $port }, request => 'SELECT * from foo', fail_counts => 0 };
-    my $got = check_mysql($v, $r);
-    is $got, $main::SERVICE_UP, 'check_mysql - request ok';
-    close_child($pid);
-    close $sock;
-}
-SKIP: {
-    skip q{Can't locate DBI.pm in @INC}, 1 if $dbi_error;
-    skip q{Can't locate DBD/mysql.pm in @INC}, 1 if $mysql_error;
-    my $port = 63334;
-    my $sock = create_sock($port);
-    skip 'cannot create socket', 1 if !$sock;
-    my $response = ''; # TODO create mysql response
-    my $pid = prepare_child($sock, [$response], 5);
-    set_default();
-    my $v = { server => {ip => '127.0.0.1'}, negotiatetimeout => 1, login => 'postgres', passwd => '', database => 'template1' };
-    my $r = { server => {ip => '127.0.0.1', port => $port }, request => 'SELECT * from foo', fail_counts => 0 };
-    my $got = check_mysql($v, $r);
-    is $got, $main::SERVICE_DOWN, 'check_mysql - timeout';
-    close_child($pid);
-    close $sock;
-}
-TODO: {
-    todo_skip q{Can't locate DBI.pm in @INC}, 1 if $dbi_error;
-    todo_skip q{Can't locate DBD/mysql.pm in @INC}, 1 if $mysql_error;
-    todo_skip 'not ready mysql response', 1;
-#SKIP: {
-    my $port = 63334;
-    my $sock = create_sock($port);
-    skip 'cannot create socket', 1 if !$sock;
-    my $response = ''; # TODO create mysql response
-    my $query_response = ''; # TODO create mysql query response (3rows)
-    my $pid = prepare_child($sock, [$response, $query_response]);
-    set_default();
-    my $v = { server => {ip => '127.0.0.1'}, negotiatetimeout => 3, login => 'postgres', passwd => '', database => 'template1' };
-    my $r = { server => {ip => '127.0.0.1', port => $port }, request => 'SELECT * from foo', receive => 3, fail_counts => 0 };
-    my $got = check_mysql($v, $r);
-    is $got, $main::SERVICE_UP, 'check_mysql - receive ok';
-    close_child($pid);
-    close $sock;
-}
-TODO: {
-    todo_skip q{Can't locate DBI.pm in @INC}, 1 if $dbi_error;
-    todo_skip q{Can't locate DBD/mysql.pm in @INC}, 1 if $mysql_error;
-    todo_skip 'not ready mysql response', 1;
-#SKIP: {
-    my $port = 63334;
-    my $sock = create_sock($port);
-    skip 'cannot create socket', 1 if !$sock;
-    my $response = ''; # TODO create mysql response
-    my $query_response = ''; # TODO create mysql query response (3rows)
-    my $pid = prepare_child($sock, [$response, $query_response]);
-    set_default();
-    my $v = { server => {ip => '127.0.0.1'}, negotiatetimeout => 3, login => 'postgres', passwd => '', database => 'template1' };
-    my $r = { server => {ip => '127.0.0.1', port => $port }, request => 'SELECT * from foo', receive => 5, fail_counts => 0 };
-    my $got = check_mysql($v, $r);
-    is $got, $main::SERVICE_DOWN, 'check_mysql - receive error';
-    close_child($pid);
-    close $sock;
-}
-SKIP: {
-    skip q{Can't locate DBI.pm in @INC}, 1 if $dbi_error;
-    skip q{Can't locate DBD/mysql.pm in @INC}, 1 if $mysql_error;
-    my $port = 63334;
-    set_default();
-    my $v = {negotiatetimeout => 1, checkport => $port };
-    my $r = { server => {ip => '127.0.0.1', port => 10000 }, fail_counts => 0 };
-    my $got = check_mysql($v, $r);
-    is $got, $main::SERVICE_DOWN, 'check_mysql - connect error';
-}
-#   - check_pgsql
-TODO: {
-    todo_skip q{Can't locate DBI.pm in @INC}, 1 if $dbi_error;
-    todo_skip q{Can't locate DBD/Pg.pm in @INC}, 1 if $pg_error;
-    todo_skip 'not ready pgsql response', 1;
-#SKIP: {
-    my $port = 63334;
-    my $sock = create_sock($port);
-    skip 'cannot create socket', 1 if !$sock;
-    my $response = ''; # TODO create pgsql response
-    my $pid = prepare_child($sock, [$response]);
-    set_default();
-    my $v = { server => {ip => '127.0.0.1'}, negotiatetimeout => 3, login => 'postgres', passwd => '', database => 'template1' };
-    my $r = { server => {ip => '127.0.0.1', port => $port }, fail_counts => 0 };
-    my $got = check_pgsql($v, $r);
-    is $got, $main::SERVICE_UP, 'check_pgsql - connect ok';
-    close_child($pid);
-    close $sock;
-}
-TODO: {
-    todo_skip q{Can't locate DBI.pm in @INC}, 1 if $dbi_error;
-    todo_skip q{Can't locate DBD/Pg.pm in @INC}, 1 if $pg_error;
-    todo_skip 'not ready pgsql response', 1;
-#SKIP: {
-    my $port = 63334;
-    my $sock = create_sock($port);
-    skip 'cannot create socket', 1 if !$sock;
-    my $response = ''; # TODO create pgsql response
-    my $pid = prepare_child($sock, [$response]);
-    set_default();
-    my $v = { server => {ip => '127.0.0.1'}, checkport => $port, negotiatetimeout => 3, login => 'postgres', passwd => '', database => 'template1' };
-    my $r = { server => {ip => '127.0.0.1', port => 10000 }, fail_counts => 0 };
-    my $got = check_pgsql($v, $r);
-    is $got, $main::SERVICE_UP, 'check_pgsql - checkport connect ok';
-    close_child($pid);
-    close $sock;
-}
-TODO: {
-    todo_skip q{Can't locate DBI.pm in @INC}, 1 if $dbi_error;
-    todo_skip q{Can't locate DBD/Pg.pm in @INC}, 1 if $pg_error;
-    todo_skip 'not ready pgsql response', 1;
-#SKIP: {
-    my $port = 63334;
-    my $sock = create_sock($port);
-    skip 'cannot create socket', 1 if !$sock;
-    my $response = ''; # TODO create pgsql response
-    my $query_response = ''; # TODO create pgsql query response
-    my $pid = prepare_child($sock, [$response, $query_response]);
-    set_default();
-    my $v = { server => {ip => '127.0.0.1'}, negotiatetimeout => 3, login => 'postgres', passwd => '', database => 'template1' };
-    my $r = { server => {ip => '127.0.0.1', port => $port }, request => 'SELECT * from foo', fail_counts => 0 };
-    my $got = check_pgsql($v, $r);
-    is $got, $main::SERVICE_UP, 'check_pgsql - request ok';
-    close_child($pid);
-    close $sock;
-}
-SKIP: {
-    skip q{Can't locate DBI.pm in @INC}, 1 if $dbi_error;
-    skip q{Can't locate DBD/Pg.pm in @INC}, 1 if $pg_error;
-    my $port = 63334;
-    my $sock = create_sock($port);
-    skip 'cannot create socket', 1 if !$sock;
-    my $response = ''; # TODO create pgsql response
-    my $pid = prepare_child($sock, [$response], 5);
-    set_default();
-    my $v = { server => {ip => '127.0.0.1'}, negotiatetimeout => 1, login => 'postgres', passwd => '', database => 'template1' };
-    my $r = { server => {ip => '127.0.0.1', port => $port }, request => 'SELECT * from foo', fail_counts => 0 };
-    my $got = check_pgsql($v, $r);
-    is $got, $main::SERVICE_DOWN, 'check_pgsql - timeout';
-    close_child($pid);
-    close $sock;
-}
-TODO: {
-    todo_skip q{Can't locate DBI.pm in @INC}, 1 if $dbi_error;
-    todo_skip q{Can't locate DBD/Pg.pm in @INC}, 1 if $pg_error;
-    todo_skip 'not ready pgsql response', 1;
-#SKIP: {
-    my $port = 63334;
-    my $sock = create_sock($port);
-    skip 'cannot create socket', 1 if !$sock;
-    my $response = ''; # TODO create pgsql response
-    my $query_response = ''; # TODO create pgsql query response (3rows)
-    my $pid = prepare_child($sock, [$response, $query_response]);
-    set_default();
-    my $v = { server => {ip => '127.0.0.1'}, negotiatetimeout => 3, login => 'postgres', passwd => '', database => 'template1' };
-    my $r = { server => {ip => '127.0.0.1', port => $port }, request => 'SELECT * from foo', receive => 3, fail_counts => 0 };
-    my $got = check_pgsql($v, $r);
-    is $got, $main::SERVICE_UP, 'check_pgsql - receive ok';
-    close_child($pid);
-    close $sock;
-}
-TODO: {
-    todo_skip q{Can't locate DBI.pm in @INC}, 1 if $dbi_error;
-    todo_skip q{Can't locate DBD/Pg.pm in @INC}, 1 if $pg_error;
-    todo_skip 'not ready pgsql response', 1;
-#SKIP: {
-    my $port = 63334;
-    my $sock = create_sock($port);
-    skip 'cannot create socket', 1 if !$sock;
-    my $response = ''; # TODO create pgsql response
-    my $query_response = ''; # TODO create pgsql query response (3rows)
-    my $pid = prepare_child($sock, [$response, $query_response]);
-    set_default();
-    my $v = { server => {ip => '127.0.0.1'}, negotiatetimeout => 3, login => 'postgres', passwd => '', database => 'template1' };
-    my $r = { server => {ip => '127.0.0.1', port => $port }, request => 'SELECT * from foo', receive => 5, fail_counts => 0 };
-    my $got = check_pgsql($v, $r);
-    is $got, $main::SERVICE_DOWN, 'check_pgsql - receive error';
-    close_child($pid);
-    close $sock;
-}
-SKIP: {
-    skip q{Can't locate DBI.pm in @INC}, 1 if $dbi_error;
-    skip q{Can't locate DBD/Pg.pm in @INC}, 1 if $pg_error;
-    my $port = 63334;
-    set_default();
-    my $v = {negotiatetimeout => 1, checkport => $port };
-    my $r = { server => {ip => '127.0.0.1', port => 10000 }, fail_counts => 0 };
-    my $got = check_pgsql($v, $r);
-    is $got, $main::SERVICE_DOWN, 'check_pgsql - connect error';
-}
-# test end
-#...............................................
-
-L7lib::comment_in();
-
-sub create_sock {
-    my $port = shift;
-    my $sock = IO::Socket::INET->new(
-        Listen => 5,
-        LocalAddr => 'localhost',
-        LocalPort => $port,
-        ReuseAddr => 1,
-        Proto => 'tcp');
-    return $sock;
-}
-sub prepare_child {
-    my $sock = shift;
-    my $res = shift;
-    my $sleep = shift;
-    my $pid = fork();
-    if ($pid == 0) {
-        my $s = $sock->accept;
-        if ($sleep) { sleep $sleep; }
-        for (@$res) {
-            print $s $_;
-#            <$s>;
-        }
-        close $s;
-        exit;
-    }
-    return $pid;
-}
-sub close_child {
-    my $pid = shift;
-    kill 15, $pid;
-    waitpid $pid, 0;
-}
-sub set_default {
-}
-sub override {
-    *ld_log = \&__ld_log;
-    *get_status = \&__get_status;
-}
-sub __get_status {
-    return $main::SERVICE_UP;
-}
-sub __ld_log {
-}
diff --git a/l7directord/t/24_connect.t b/l7directord/t/24_connect.t
deleted file mode 100644 (file)
index 0c03a3d..0000000
+++ /dev/null
@@ -1,199 +0,0 @@
-use strict;
-use warnings;
-no warnings qw(redefine once);
-use lib qw(t/lib lib);
-use subs qw(print);
-use Cwd;
-use L7lib;
-use Test::More tests => 9;
-use IO::Socket::INET6;
-
-L7lib::chdir();
-L7lib::comment_out();
-require './l7directord';
-override();
-
-#...............................................
-# test start
-#   - check_connect
-SKIP: {
-    my $port = 63334;
-    my $sock = create_sock($port);
-    skip 'cannot create socket', 1 if !$sock;
-    set_default();
-    my $v = { checktimeout => 3, protocol => 'tcp' };
-    my $r = { server => {ip => '127.0.0.1', port => $port }, fail_counts => 0 };
-##    my $r = { server => {ip => '192.168.0.11', port => $port }, fail_counts => 0 };
-    my $got = check_connect($v, $r);
-    is $got, $main::SERVICE_UP, 'check_connect - connect ok';
-    close $sock;
-}
-SKIP: {
-    my $port = 63334;
-    my $sock = create_sock($port);
-    skip 'cannot create socket', 1 if !$sock;
-    set_default();
-    my $v = { checktimeout => 3, protocol => 'tcp', checkport => $port };
-    my $r = { server => {ip => '127.0.0.1', port => 10000 }, fail_counts => 0 };
-    my $got = check_connect($v, $r);
-    is $got, $main::SERVICE_UP, 'check_connect - checkport connect ok';
-    close $sock;
-}
-TODO: {
-    todo_skip 'cannot half open socket', 1;
-#SKIP: {
-    my $port = 63334;
-    my $sock = create_sock($port);
-    skip 'cannot create socket', 1 if !$sock;
-    set_default();
-    my $v = { checktimeout => 1, protocol => 'tcp' };
-    my $r = { server => {ip => '127.0.0.1', port => $port } , fail_counts => 0 };
-    my $got = check_connect($v, $r);
-    is $got, $main::SERVICE_DOWN, 'check_connect - timeout';
-    close $sock;
-}
-{
-    my $port = 63334;
-    set_default();
-    my $v = { checktimeout => 1, checkport => $port, protocol => 'tcp' };
-    my $r = { server => {ip => '127.0.0.1', port => 10000 }, fail_counts => 0 };
-    my $got = check_connect($v, $r);
-    is $got, $main::SERVICE_DOWN, 'check_connect - connect error';
-}
-SKIP: {
-    my $port = 63335;
-    my $sock = create_sock($port, 'udp');
-    skip 'cannot create socket', 1 if !$sock;
-    set_default();
-    my $v = { checktimeout => 3, protocol => 'udp' };
-    my $r = { server => {ip => '127.0.0.1', port => $port }, fail_counts => 0 };
-    my $got = check_connect($v, $r);
-    is $got, $main::SERVICE_UP, 'check_connect - connect ok (udp)';
-    close $sock;
-}
-SKIP: {
-    my $port = 63336;
-    my $sock = create_sock($port, 'udp');
-    skip 'cannot create socket', 1 if !$sock;
-    set_default();
-    my $v = { checktimeout => 3, protocol => 'udp', checkport => $port };
-    my $r = { server => {ip => '127.0.0.1', port => 10000 }, fail_counts => 0 };
-    my $got = check_connect($v, $r);
-    is $got, $main::SERVICE_UP, 'check_connect - checkport connect ok (udp)';
-    close $sock;
-}
-TODO: {
-    todo_skip 'cannot half open socket', 1;
-#SKIP: {
-    my $port = 63337;
-    my $sock = create_sock($port, 'udp');
-    skip 'cannot create socket', 1 if !$sock;
-    set_default();
-    my $v = { checktimeout => 1, protocol => 'udp' };
-    my $r = { server => {ip => '127.0.0.1', port => $port } , fail_counts => 0 };
-    my $got = check_connect($v, $r);
-    is $got, $main::SERVICE_DOWN, 'check_connect - timeout (udp)';
-    close $sock;
-}
-TODO: {
-    todo_skip 'udp socket can connect any port?', 1;
-    my $port = 63338;
-    set_default();
-    my $v = { checktimeout => 1, checkport => $port, protocol => 'udp' };
-    my $r = { server => {ip => '127.0.0.1', port => 10000 }, fail_counts => 0 };
-    my $got = check_connect($v, $r);
-    is $got, $main::SERVICE_DOWN, 'check_connect - connect error (udp)';
-}
-##################################################
-### IPv6 ld_open_socket Check
-SKIP: {
-    my $port = 63334;
-    my $sock = create_sock6($port);
-    skip 'cannot create socket!!!!', 1 if !$sock;
-    set_default();
-    my $v = { checktimeout => 3, protocol => 'tcp' };
-    my $r = { server => {ip => '::1', port => $port }, fail_counts => 0 };
-    my $got = check_connect($v, $r);
-    is $got, $main::SERVICE_UP, 'check_connect(IPv6) - connect ok';
-    close $sock;
-}
-# test end
-#...............................................
-
-L7lib::comment_in();
-
-sub create_sock {
-    my $port = shift;
-    my $proto = shift || 'tcp';
-    if ($proto eq 'tcp') {
-        my $sock = IO::Socket::INET6->new(
-            Listen => 5,
-            LocalAddr => 'localhost',
-            LocalPort => $port,
-            ReuseAddr => 1,
-            Proto => $proto);
-        return $sock;
-    }
-    else {
-        my $sock = IO::Socket::INET6->new(
-            LocalAddr => 'localhost',
-            LocalPort => $port,
-            ReuseAddr => 1,
-            Proto => $proto);
-        return $sock;
-    }
-}
-sub create_sock6 {
-    my $port = shift;
-    my $proto = shift || 'tcp';
-    if ($proto eq 'tcp') {
-        my $sock = IO::Socket::INET6->new(
-            Listen => 5,
-            LocalAddr => '::1',
-            LocalPort => $port,
-            ReuseAddr => 1,
-            Proto => $proto);
-        return $sock;
-    }
-    else {
-        my $sock = IO::Socket::INET6->new(
-            LocalAddr => '::1',
-            LocalPort => $port,
-            ReuseAddr => 1,
-            Proto => $proto);
-        return $sock;
-    }
-}
-sub prepare_child {
-    my $sock = shift;
-    my $res = shift;
-    my $sleep = shift;
-    my $pid = fork();
-    if ($pid == 0) {
-        if ($sleep) { sleep $sleep; }
-        my $s = $sock->accept;
-        for (@$res) {
-            print $s $_;
-            <$s>;
-        }
-        close $s;
-        exit;
-    }
-    return $pid;
-}
-sub close_child {
-    my $pid = shift;
-    kill 15, $pid;
-    waitpid $pid, 0;
-}
-sub set_default {
-}
-sub override {
-    *ld_log = \&__ld_log;
-    *get_status = \&__get_status;
-}
-sub __get_status {
-    return $main::SERVICE_UP;
-}
-sub __ld_log {
-}
diff --git a/l7directord/t/25_sip.t b/l7directord/t/25_sip.t
deleted file mode 100644 (file)
index de4642d..0000000
+++ /dev/null
@@ -1,278 +0,0 @@
-use strict;
-use warnings;
-no warnings qw(redefine once);
-use lib qw(t/lib lib);
-use subs qw(print);
-use Cwd;
-use L7lib;
-use Test::More tests => 12;
-use Socket;
-use Socket6;
-use IO::Socket::INET6;
-
-L7lib::chdir();
-L7lib::comment_out();
-require './l7directord';
-override();
-
-#...............................................
-# test start
-#   - check_sip
-SKIP: {
-    my $port = 63334;
-    my $sock = create_sock($port);
-    skip 'cannot create socket', 1 if !$sock;
-    my $pid = prepare_child($sock, ["SIP/2.0 200 OK\n"]);
-    set_default();
-    my $v = { negotiatetimeout => 3, protocol => 'tcp', login => 'carol@chicago.com' };
-    my $r = { server => {ip => '127.0.0.1', port => $port }, fail_counts => 0 };
-    my $got = check_sip($v, $r);
-    is $got, $main::SERVICE_UP, 'check_sip - response ok';
-    close_child($pid);
-    close $sock;
-}
-SKIP: {
-    my $port = 63334;
-    my $sock = create_sock($port);
-    skip 'cannot create socket', 1 if !$sock;
-    my $pid = prepare_child($sock, ["SIP/2.0 200 OK\n"]);
-    set_default();
-    my $v = { negotiatetimeout => 3, protocol => 'tcp', checkport => $port, login => 'carol@chicago.com' };
-    my $r = { server => {ip => '127.0.0.1', port => 10000 }, fail_counts => 0 };
-    my $got = check_sip($v, $r);
-    is $got, $main::SERVICE_UP, 'check_sip - checkport response ok';
-    close_child($pid);
-    close $sock;
-}
-SKIP: {
-    my $port = 63334;
-    my $sock = create_sock($port);
-    skip 'cannot create socket', 1 if !$sock;
-    my $pid = prepare_child($sock, ["SIP/2.0 200 OK\n"], 2);
-    set_default();
-    my $v = { negotiatetimeout => 1, protocol => 'tcp', login => 'carol@chicago.com' };
-    my $r = { server => {ip => '127.0.0.1', port => $port } , fail_counts => 0 };
-    my $got = check_sip($v, $r);
-    is $got, $main::SERVICE_DOWN, 'check_sip - timeout';
-    close_child($pid);
-    close $sock;
-}
-{
-    my $port = 63334;
-    set_default();
-    my $v = { negotiatetimeout => 1, checkport => $port, protocol => 'tcp', login => 'carol@chicago.com' };
-    my $r = { server => {ip => '127.0.0.1', port => 10000 }, fail_counts => 0 };
-    my $got = check_sip($v, $r);
-    is $got, $main::SERVICE_DOWN, 'check_sip - connect error';
-}
-TODO: {
-    todo_skip 'not implement udp sip response', 1;
-#SKIP: {
-    my $port = 63335;
-    my $sock = create_sock($port, 'udp');
-    skip 'cannot create socket', 1 if !$sock;
-    my $pid = prepare_child($sock, ["SIP/2.0 200 OK\n"], 0, 'udp');
-    set_default();
-    my $v = { negotiatetimeout => 3, protocol => 'udp', login => 'carol@chicago.com' };
-    my $r = { server => {ip => '127.0.0.1', port => $port }, fail_counts => 0 };
-    my $got = check_sip($v, $r);
-    is $got, $main::SERVICE_UP, 'check_sip - connect ok (udp)';
-    close_child($pid);
-    close $sock;
-}
-TODO: {
-    todo_skip 'not implement udp sip response', 1;
-#SKIP: {
-    my $port = 63336;
-    my $sock = create_sock($port, 'udp');
-    skip 'cannot create socket', 1 if !$sock;
-    my $pid = prepare_child($sock, ["SIP/2.0 200 OK\n"], 0, 'udp');
-    set_default();
-    my $v = { negotiatetimeout => 3, protocol => 'udp', checkport => $port, login => 'carol@chicago.com' };
-    my $r = { server => {ip => '127.0.0.1', port => 10000 }, fail_counts => 0 };
-    my $got = check_sip($v, $r);
-    is $got, $main::SERVICE_UP, 'check_sip - checkport connect ok (udp)';
-    close_child($pid);
-    close $sock;
-}
-TODO: {
-    todo_skip 'not implement udp sip response', 1;
-#SKIP: {
-    my $port = 63337;
-    my $sock = create_sock($port, 'udp');
-    skip 'cannot create socket', 1 if !$sock;
-    my $pid = prepare_child($sock, ["SIP/2.0 200 OK\n"], 2, 'udp');
-    set_default();
-    my $v = { negotiatetimeout => 1, protocol => 'udp', login => 'carol@chicago.com' };
-    my $r = { server => {ip => '127.0.0.1', port => $port } , fail_counts => 0 };
-    my $got = check_sip($v, $r);
-    is $got, $main::SERVICE_DOWN, 'check_sip - timeout (udp)';
-    close_child($pid);
-    close $sock;
-}
-TODO: {
-    todo_skip 'udp socket can connect any port?', 1;
-    my $port = 63338;
-    set_default();
-    my $v = { negotiatetimeout => 1, checkport => $port, protocol => 'udp', login => 'carol@chicago.com' };
-    my $r = { server => {ip => '127.0.0.1', port => 10000 }, fail_counts => 0 };
-    my $got = check_sip($v, $r);
-    is $got, $main::SERVICE_DOWN, 'check_sip - connect error (udp)';
-}
-#### IPv6
-SKIP: {
-    my $port = 63334;
-    my $sock = create_sock6($port);
-    skip 'cannot create socket6', 1 if !$sock;
-    my $pid = prepare_child($sock, ["SIP/2.0 200 OK\n"]);
-    set_default();
-    my $v = { negotiatetimeout => 3, protocol => 'tcp', login => 'carol@chicago.com' };
-    my $r = { server => {ip => '[::1]', port => $port }, fail_counts => 0 };
-    my $got = check_sip($v, $r);
-    is $got, $main::SERVICE_UP, 'check_sip IPv6 - response ok';
-    close_child($pid);
-    close $sock;
-}
-SKIP: {
-    my $port = 63334;
-    my $sock = create_sock6($port);
-    skip 'cannot create socket6', 1 if !$sock;
-    my $pid = prepare_child($sock, ["SIP/2.0 200 OK\n"]);
-    set_default();
-    my $v = { negotiatetimeout => 3, protocol => 'tcp', checkport => $port, login => 'carol@chicago.com' };
-    my $r = { server => {ip => '[::1]', port => 10000 }, fail_counts => 0 };
-    my $got = check_sip($v, $r);
-    is $got, $main::SERVICE_UP, 'check_sip - checkport response ok';
-    close_child($pid);
-    close $sock;
-}
-SKIP: {
-    my $port = 63334;
-    my $sock = create_sock6($port);
-    skip 'cannot create socket6', 1 if !$sock;
-    my $pid = prepare_child($sock, ["SIP/2.0 200 OK\n"], 2);
-    set_default();
-    my $v = { negotiatetimeout => 1, protocol => 'tcp', login => 'carol@chicago.com' };
-    my $r = { server => {ip => '[::1]', port => $port } , fail_counts => 0 };
-    my $got = check_sip($v, $r);
-    is $got, $main::SERVICE_DOWN, 'check_sip - timeout';
-    close_child($pid);
-    close $sock;
-}
-{
-    my $port = 63334;
-    set_default();
-    my $v = { negotiatetimeout => 1, checkport => $port, protocol => 'tcp', login => 'carol@chicago.com' };
-    my $r = { server => {ip => '[::1]', port => 10000 }, fail_counts => 0 };
-    my $got = check_sip($v, $r);
-    is $got, $main::SERVICE_DOWN, 'check_sip - connect error';
-}
-# test end
-#...............................................
-
-L7lib::comment_in();
-
-sub create_sock {
-    my $port = shift;
-    my $proto = shift || 'tcp';
-    if ($proto eq 'tcp') {
-        my $sock = IO::Socket::INET6->new(
-            Listen => 5,
-            LocalAddr => 'localhost',
-            LocalPort => $port,
-            ReuseAddr => 1,
-            Proto => $proto);
-        return $sock;
-    }
-    else {
-        my $sock = IO::Socket::INET6->new(
-            LocalAddr => 'localhost',
-            LocalPort => $port,
-            ReuseAddr => 1,
-            Proto => $proto);
-        return $sock;
-    }
-}
-sub create_sock6 {
-    my $port = shift;
-    my $proto = shift || 'tcp';
-    if ($proto eq 'tcp') {
-        my $sock = IO::Socket::INET6->new(
-            Listen => 5,
-            LocalAddr => 'localhost6',
-            LocalPort => $port,
-            ReuseAddr => 1,
-            Proto => $proto);
-        return $sock;
-    }
-    else {
-        my $sock = IO::Socket::INET6->new(
-            LocalAddr => 'localhost6',
-            LocalPort => $port,
-            ReuseAddr => 1,
-            Proto => $proto);
-        return $sock;
-    }
-}
-
-sub prepare_child {
-    my $sock = shift;
-    my $res = shift;
-    my $sleep = shift;
-    my $udp = shift;
-    my $pid = fork();
-    if ($pid == 0) {
-        if (!$udp) {
-            my $s = $sock->accept;
-            if ($sleep) { sleep $sleep; }
-            for (@$res) {
-                <$s>;
-                print $s $_;
-            }
-            close $s;
-            exit;
-        } else {
-            my $req;
-            my $ip1;
-            my $port1;
-            recv $sock, $req, 1500, 0;
-            if($req =~ /^Via.+(\d+\.\d+\.\d+\.\d+):(\d+)/){
-                $ip1 = $1;
-                $port1 = $2;
-            }
-            else {
-                $req =~ /^Via\s*:(\[(0-9a-zA-Z:_-)\]):(\d+)/;
-                $ip1 = $1;
-                $port1 = $2;
-            }
-            my $ret_sock = IO::Socket::INET->new(
-                PeerAddr => $ip1,
-                PeerPort => $port1,
-                Proto => 'udp',
-            );
-            if ($sleep) { sleep $sleep; }
-            for (@$res) {
-                send $ret_sock, $_, 0;
-            }
-            close $ret_sock;
-            exit;
-        }
-    }
-    return $pid;
-}
-sub close_child {
-    my $pid = shift;
-    kill 15, $pid;
-    waitpid $pid, 0;
-}
-sub set_default {
-}
-sub override {
-    *ld_log = \&__ld_log;
-    *get_status = \&__get_status;
-}
-sub __get_status {
-    return $main::SERVICE_UP;
-}
-sub __ld_log {
-}
diff --git a/l7directord/t/26_ftp.t b/l7directord/t/26_ftp.t
deleted file mode 100644 (file)
index 32f7c64..0000000
+++ /dev/null
@@ -1,378 +0,0 @@
-use strict;
-use warnings;
-no warnings qw(redefine once);
-use lib qw(t/lib lib);
-use subs qw(print);
-use Cwd;
-use L7lib;
-use Test::More tests => 19;
-use IO::Socket::INET;
-use IO::Socket::INET6;
-use Socket;
-use Socket6;
-
-L7lib::chdir();
-L7lib::comment_out();
-require './l7directord';
-override();
-
-#...............................................
-# test start
-#   - check_ftp
-#220 (vsFTPd 2.0.5)
-#USER ftp
-#331 Please specify the password.
-#PASS ftp
-#230 Login successful.
-#CWD /
-#250 Directory successfully changed.
-#TYPE I
-#200 Switching to Binary mode.
-#PASV
-#227 Entering Passive Mode (127,0,0,1,191,154)
-#RETR test.dat
-#150 Opening BINARY mode data connection for test.dat (9 bytes).
-#226 File send OK.
-#QUIT
-#221 Goodbye.
-SKIP: {
-    my $port = 63334;
-    my $sock = create_sock($port);
-    skip 'cannot create socket', 1 if !$sock;
-    my $pid = prepare_child($sock, [
-        "220 (vsFTPd 2.0.5)\n",
-        "331 Please specify the password\n",
-        "230 Login successful.\n",
-        "250 Directory successfully changed.\n",
-        "221 Goodbye.\n",
-        ]);
-    set_default();
-    my $v = { negotiatetimeout => 3, login => 'ftp', passwd => 'ftppass' };
-    my $r = { server => {ip => '127.0.0.1', port => $port }, fail_counts => 0 };
-    my $got = check_ftp($v, $r);
-    is $got, $main::SERVICE_UP, 'check_ftp - login ok';
-    close_child($pid);
-    close $sock;
-}
-SKIP: {
-    my $port = 63334;
-    my $sock = create_sock($port);
-    skip 'cannot create socket', 1 if !$sock;
-    my $pid = prepare_child($sock, [
-        "220 (vsFTPd 2.0.5)\n",
-        "331 Please specify the password\n",
-        "230 Login successful.\n",
-        "250 Directory successfully changed.\n",
-        "221 Goodbye.\n",
-        ]);
-    set_default();
-    my $v = { negotiatetimeout => 3, login => 'ftp', passwd => 'ftppass', checkport => $port };
-    my $r = { server => {ip => '127.0.0.1', port => 10000 }, fail_counts => 0 };
-    my $got = check_ftp($v, $r);
-    is $got, $main::SERVICE_UP, 'check_ftp - checkport login ok';
-    close_child($pid);
-    close $sock;
-}
-SKIP: {
-    my $port = 63334;
-    my $sock = create_sock($port);
-    skip 'cannot create socket', 1 if !$sock;
-    my $pid = prepare_child($sock, [
-        "220 (vsFTPd 2.0.5)\n",
-        "331 Please specify the password\n",
-        "230 Login successful.\n",
-        "250 Directory successfully changed.\n",
-        "221 Goodbye.\n",
-        ], 2);
-    set_default();
-    my $v = {negotiatetimeout => 1, login => 'ftp', passwd => 'ftppass'};
-    my $r = { server => {ip => '127.0.0.1', port => $port } , fail_counts => 0 };
-    my $got = check_ftp($v, $r);
-    is $got, $main::SERVICE_DOWN, 'check_ftp - timeout';
-    close_child($pid);
-    close $sock;
-}
-SKIP: {
-    my $port = 63334;
-    my $sock = create_sock($port);
-    my $dataport = 53332;
-    my $datasock = create_sock($dataport);
-    skip 'cannot create socket', 1 if !$sock;
-    my $pid = prepare_child($sock, [
-        "220 (vsFTPd 2.0.5)\n",
-        "331 Please specify the password\n",
-        "530 Login incorrect.\n",
-        "221 Goodbye.\n",
-        ]);
-    set_default();
-    my $v = {negotiatetimeout => 1, login => 'foo', passwd => 'bar'};
-    my $r = { server => {ip => '127.0.0.1', port => $port } , fail_counts => 0 };
-    my $got = check_ftp($v, $r);
-    is $got, $main::SERVICE_DOWN, 'check_ftp - login error';
-    close_child($pid);
-    close $sock;
-}
-SKIP: {
-    my $port = 63334;
-    my $sock = create_sock($port);
-    skip 'cannot create socket', 1 if !$sock;
-    my $pid = prepare_child($sock, [
-        "220 (vsFTPd 2.0.5)\n",
-        "331 Please specify the password\n",
-        "230 Login successful.\n",
-        "550 Failed to change directory.\n",
-        "221 Goodbye.\n",
-        ]);
-    set_default();
-    my $v = { negotiatetimeout => 3, login => 'ftp', passwd => 'ftppass', checkport => $port };
-    my $r = { server => {ip => '127.0.0.1', port => 10000 }, fail_counts => 0 };
-    my $got = check_ftp($v, $r);
-    is $got, $main::SERVICE_DOWN, 'check_ftp - checkport cwd error';
-    close_child($pid);
-    close $sock;
-}
-SKIP: {
-    my $port = 63334;
-    my $sock = create_sock($port);
-    my $dataport = 53334;
-    my $datasock = create_sock($dataport);
-    skip 'cannot create socket', 1 if !$sock;
-    skip 'cannot create data socket', 1 if !$datasock;
-    my $pasvport = sprintf "%d,%d", $dataport / 256, $dataport % 256;
-    my $pid = prepare_child($sock, [
-        "220 (vsFTPd 2.0.5)\n",
-        "331 Please specify the password\n",
-        "230 Login successful.\n",
-        "250 Directory successfully changed.\n",
-        "200 Switching to Binary mode.\n",
-        "227 Entering Passive Mode (127,0,0,1,$pasvport)\n",
-        "150 Opening BINARY mode data connection for test.dat (9 bytes).\n226 File send OK.\n",
-        "221 Goodbye.\n",
-        ]);
-    my $datapid = prepare_child($datasock, ["test.dat\n"], 0, 1);
-    set_default();
-    my $v = { negotiatetimeout => 3, login => 'ftp', passwd => 'ftppass' };
-    my $r = { server => {ip => '127.0.0.1', port => $port }, request => 'test.dat' , fail_counts => 0 };
-    my $got = check_ftp($v, $r);
-    is $got, $main::SERVICE_UP, 'check_ftp - get ok';
-    close_child($pid);
-    close_child($datapid);
-    close $sock;
-}
-SKIP: {
-    my $port = 63334;
-    my $sock = create_sock($port);
-    my $dataport = 53335;
-    my $datasock = create_sock($dataport);
-    skip 'cannot create socket', 1 if !$sock;
-    skip 'cannot create socket', 1 if !$datasock;
-    my $pasvport = sprintf "%d,%d", $dataport / 256, $dataport % 256;
-    my $pid = prepare_child($sock, [
-        "220 (vsFTPd 2.0.5)\n",
-        "331 Please specify the password\n",
-        "230 Login successful.\n",
-        "250 Directory successfully changed.\n",
-        "200 Switching to Binary mode.\n",
-        "227 Entering Passive Mode (127,0,0,1,$pasvport)\n",
-        "550 Failed to open file.\n",
-        "221 Goodbye.\n",
-        ]);
-    my $datapid = prepare_child($datasock, ["test.dat\n"]);
-    set_default();
-    my $v = { negotiatetimeout => 3, login => 'ftp', passwd => 'ftppass' };
-    my $r = { server => {ip => '127.0.0.1', port => $port }, request => 'test.dat' , fail_counts => 0 };
-    my $got = check_ftp($v, $r);
-    is $got, $main::SERVICE_DOWN, 'check_ftp - get error';
-    close_child($pid);
-    close_child($datapid);
-    close $sock;
-}
-SKIP: {
-    my $port = 63334;
-    my $sock = create_sock($port);
-    my $dataport = 53334;
-    my $datasock = create_sock($dataport);
-    skip 'cannot create socket', 1 if !$sock;
-    skip 'cannot create data socket', 1 if !$datasock;
-    my $pasvport = sprintf "%d,%d", $dataport / 256, $dataport % 256;
-    my $pid = prepare_child($sock, [
-        "220 (vsFTPd 2.0.5)\n",
-        "331 Please specify the password\n",
-        "230 Login successful.\n",
-        "250 Directory successfully changed.\n",
-        "200 Switching to Binary mode.\n",
-        "227 Entering Passive Mode (127,0,0,1,$pasvport)\n150 Opening BINARY mode data connection for test.dat (9 bytes).\n",
-        "226 File send OK.\n",
-        "221 Goodbye.\n",
-        ]);
-    my $datapid = prepare_child($datasock, ["test.dat\n"], 0, 1);
-    set_default();
-    my $v = { negotiatetimeout => 3, login => 'ftp', passwd => 'ftppass' };
-    my $r = { server => {ip => '127.0.0.1', port => $port }, request => 'test.dat', receive => 'test' , fail_counts => 0 };
-    my $got = check_ftp($v, $r);
-    is $got, $main::SERVICE_UP, 'check_ftp - receive ok';
-    close_child($pid);
-    close_child($datapid);
-    close $sock;
-}
-SKIP: {
-    my $port = 63334;
-    my $sock = create_sock($port);
-    my $dataport = 53334;
-    my $datasock = create_sock($dataport);
-    skip 'cannot create socket', 1 if !$sock;
-    skip 'cannot create data socket', 1 if !$datasock;
-    my $pasvport = sprintf "%d,%d", $dataport / 256, $dataport % 256;
-    my $pid = prepare_child($sock, [
-        "220 (vsFTPd 2.0.5)\n",
-        "331 Please specify the password\n",
-        "230 Login successful.\n",
-        "250 Directory successfully changed.\n",
-        "200 Switching to Binary mode.\n",
-        "227 Entering Passive Mode (127,0,0,1,$pasvport)\n150 Opening BINARY mode data connection for test.dat (9 bytes).\n",
-        "226 File send OK.\n",
-        "221 Goodbye.\n",
-        ]);
-    my $datapid = prepare_child($datasock, ["test.dat\n"], 0, 1);
-    set_default();
-    my $v = { negotiatetimeout => 3, login => 'ftp', passwd => 'ftppass' };
-    my $r = { server => {ip => '127.0.0.1', port => $port }, request => 'test.dat', receive => 'foo' , fail_counts => 0 };
-    my $got = check_ftp($v, $r);
-    is $got, $main::SERVICE_DOWN, 'check_ftp - receive error';
-    close_child($pid);
-    close_child($datapid);
-    close $sock;
-}
-{
-    my $port = 63334;
-    set_default();
-    my $v = {negotiatetimeout => 1, checkport => $port };
-    my $r = { server => {ip => '127.0.0.1', port => 10000 }, fail_counts => 0 };
-    my $got = check_ftp($v, $r);
-    is $got, $main::SERVICE_DOWN, 'check_ftp - connect error';
-}
-########################################################################
-#### IPv6 Test
-## 2001::11 接続確認
-SKIP: {
-    my $port = 63335;
-    my $sock = create_sock6($port);
-    skip 'cannot create socket', 1 if !$sock;
-    my $pid = prepare_child($sock, [
-        "220 (vsFTPd 2.0.5)\n",
-        "331 Please specify the password\n",
-        "230 Login successful.\n",
-        "250 Directory successfully changed.\n",
-        "221 Goodbye.\n",
-        ]);
-    set_default();
-    my $v = { negotiatetimeout => 3, login => 'ftp', passwd => 'ftppass' };
-    my $r = { server => {ip => '2001::11', port => 21 }, fail_counts => 0 };
-    my $got = check_ftp($v, $r);
-    is $got, $main::SERVICE_UP, 'check_ftp6 - login ok';
-    close_child($pid);
-    close $sock;
-}
-SKIP: {
-    my $port = 63335;
-    my $sock = create_sock6($port);
-    skip 'cannot create socket', 1 if !$sock;
-    my $pid = prepare_child($sock, [
-        "220 (vsFTPd 2.0.5)\n",
-        "331 Please specify the password\n",
-        "230 Login successful.\n",
-        "250 Directory successfully changed.\n",
-        "221 Goodbye.\n",
-        ]);
-    set_default();
-    my $v = { negotiatetimeout => 3, login => 'ftp', passwd => 'ftppass', checkport => $port };
-    my $r = { server => {ip => '2001::11', port => 10000 }, fail_counts => 0 };
-    my $got = check_ftp($v, $r);
-    is $got, $main::SERVICE_DOWN, 'check_ftp - checkport login ok';
-    close_child($pid);
-    close $sock;
-}
-# test end
-#...............................................
-
-L7lib::comment_in();
-
-sub create_sock {
-    my $port = shift;
-    my $sock = IO::Socket::INET->new(
-        Listen => 5,
-        LocalAddr => 'localhost',
-        LocalPort => $port,
-        ReuseAddr => 1,
-        Proto => 'tcp');
-    return $sock;
-}
-sub create_sock6 {
-    my $port = shift;
-    my $proto = shift || 'tcp';
-    if ($proto eq 'tcp') {
-        my $sock = IO::Socket::INET6->new(
-            Listen => 5,
-            LocalAddr => '::1',
-            LocalPort => $port,
-            ReuseAddr => 1,
-            Proto => $proto);
-        return $sock;
-    }
-    else {
-        my $sock = IO::Socket::INET6->new(
-            LocalAddr => '::1',
-            LocalPort => $port,
-            ReuseAddr => 1,
-            Proto => $proto);
-        return $sock;
-    }
-}
-##
-##sub create_sock6 {
-##    my $port = shift;
-##    my $sock = IO::Socket::INET6->new(
-##        Listen => 5,
-##        LocalAddr => '::1',
-##        LocalPort => $port,
-##        ReuseAddr => 1,
-##        Proto => 'tcp');
-##    return $sock;
-##}
-sub prepare_child {
-    my $sock = shift;
-    my $res = shift;
-    my $sleep = shift;
-    my $pid = fork();
-    if ($pid == 0) {
-        my $s = $sock->accept;
-        if ($sleep) { sleep $sleep; }
-        my $read = 0;
-        for (@$res) {
-            if ($read) {
-                my $req = <$s>;
-            }
-            print $s $_;
-            $read = 1;
-        }
-        close $s;
-        exit;
-    }
-    return $pid;
-}
-sub close_child {
-    my $pid = shift;
-    kill 15, $pid;
-    waitpid $pid, 0;
-}
-sub set_default {
-}
-sub override {
-    *ld_log = \&__ld_log;
-    *get_status = \&__get_status;
-}
-sub __get_status {
-    return $main::SERVICE_UP;
-}
-sub __ld_log {
-}
diff --git a/l7directord/t/27_dns.t b/l7directord/t/27_dns.t
deleted file mode 100644 (file)
index 2c4c73c..0000000
+++ /dev/null
@@ -1,172 +0,0 @@
-use strict;
-use warnings;
-no warnings qw(redefine once);
-use lib qw(t/lib lib);
-use subs qw(print);
-use Cwd;
-use L7lib;
-use Test::More tests => 6;
-use Socket;
-use Socket6;
-use IO::Socket::INET;
-use IO::Socket::INET6;
-L7lib::chdir();
-L7lib::comment_out();
-require './l7directord';
-override();
-
-our $module_error = 0;
-eval { require Net::DNS::Resolver; };
-if ($@) {
-    $module_error = 1;
-}
-
-#...............................................
-# test start
-#   - check_dns
-TODO: {
-    todo_skip q{Can't locate Net/DNS.pm in @INC}, 1 if $module_error;
-    todo_skip 'not implement dns response', 1;
-#SKIP: {
-    my $port = 63334;
-    my $sock = create_sock($port);
-    skip 'cannot create socket', 1 if !$sock;
-    my $pid = prepare_child($sock, []);
-    set_default();
-    my $v = { negotiatetimeout => 3 };
-    my $r = { server => {ip => '127.0.0.1', port => $port }, request => 'localhost', receive => '127.0.0.1' , fail_counts => 0 };
-local $main::DEBUG_LEVEL = 100;
-    my $got = check_dns($v, $r);
-    is $got, $main::SERVICE_UP, 'check_dns - A ok';
-    close_child($pid);
-    close $sock;
-}
-TODO: {
-    todo_skip q{Can't locate Net/DNS.pm in @INC}, 1 if $module_error;
-    todo_skip 'not implement dns response', 1;
-#SKIP: {
-    my $port = 63334;
-    my $sock = create_sock($port);
-    skip 'cannot create socket', 1 if !$sock;
-    my $pid = prepare_child($sock, []);
-    set_default();
-    my $v = { negotiatetimeout => 3, checkport => $port };
-    my $r = { server => {ip => '127.0.0.1', port => 10000}, request => 'localhost', receive => '127.0.0.1' , fail_counts => 0 };
-local $main::DEBUG_LEVEL = 100;
-    my $got = check_dns($v, $r);
-    is $got, $main::SERVICE_UP, 'check_dns - checkport A ok';
-    close_child($pid);
-    close $sock;
-}
-TODO: {
-    todo_skip q{Can't locate Net/DNS.pm in @INC}, 1 if $module_error;
-    todo_skip 'not implement dns response', 1;
-#SKIP: {
-    my $port = 63334;
-    my $sock = create_sock($port);
-    skip 'cannot create socket', 1 if !$sock;
-    my $pid = prepare_child($sock, []);
-    set_default();
-    my $v = {negotiatetimeout => 3};
-    my $r = { server => {ip => '127.0.0.1', port => $port}, request => '127.0.0.1', receive => 'localhost' , fail_counts => 0 };
-local $main::DEBUG_LEVEL = 100;
-    my $got = check_dns($v, $r);
-    is $got, $main::SERVICE_UP, 'check_dns - PTR ok';
-    close_child($pid);
-    close $sock;
-}
-SKIP: {
-    skip q{Can't locate Net/DNS.pm in @INC}, 1 if $module_error;
-    my $port = 63334;
-    my $sock = create_sock($port);
-    skip 'cannot create socket', 1 if !$sock;
-    my $pid = prepare_child($sock, [], 2);
-    set_default();
-    my $v = {negotiatetimeout => 1};
-    my $r = { server => {ip => '127.0.0.1', port => $port }, request => 'localhost', receive => '127.0.0.1' , fail_counts => 0 };
-    my $got = check_dns($v, $r);
-    is $got, $main::SERVICE_DOWN, 'check_dns - timeout';
-    close_child($pid);
-    close $sock;
-}
-TODO: {
-    todo_skip q{Can't locate Net/DNS.pm in @INC}, 1 if $module_error;
-    todo_skip 'not implement dns response', 1;
-#SKIP: {
-    my $port = 63334;
-    my $sock = create_sock($port);
-    skip 'cannot create socket', 1 if !$sock;
-    my $pid = prepare_child($sock, []);
-    set_default();
-    my $v = {negotiatetimeout => 1};
-    my $r = { server => {ip => '127.0.0.1', port => $port }, request => 'localhost', receive => '128.0.0.1' , fail_counts => 0 };
-local $main::DEBUG_LEVEL = 100;
-    my $got = check_dns($v, $r);
-    is $got, $main::SERVICE_DOWN, 'check_dns - A error';
-    close_child($pid);
-    close $sock;
-}
-SKIP: {
-    skip q{Can't locate Net/DNS.pm in @INC}, 1 if $module_error;
-    my $port = 63334;
-    set_default();
-    my $v = {negotiatetimeout => 1, checkport => $port };
-    my $r = { server => {ip => '127.0.0.1', port => 10000 }, fail_counts => 0 };
-    my $got = check_dns($v, $r);
-    is $got, $main::SERVICE_DOWN, 'check_dns - connect error';
-}
-# test end
-#...............................................
-
-L7lib::comment_in();
-
-sub create_sock {
-    my $port = shift;
-    my $sock = IO::Socket::INET->new(
-        LocalAddr => 'localhost',
-        LocalPort => $port,
-        ReuseAddr => 1,
-        Proto => 'udp');
-    return $sock;
-}
-sub create_sock6 {
-    my $port = shift;
-    my $sock = IO::Socket::INET6->new(
-        LocalAddr => 'localhost6',
-        LocalPort => $port,
-        ReuseAddr => 1,
-        Proto => 'udp');
-    return $sock;
-}
-sub prepare_child {
-    my $sock = shift;
-    my $res = shift;
-    my $sleep = shift;
-    my $pid = fork();
-    if ($pid == 0) {
-        if ($sleep) { sleep $sleep; }
-        for (@$res) {
-            my $req;
-            recv $sock, $req, 1500, 0;
-            send $sock, $_, 0;
-        }
-        exit;
-    }
-    return $pid;
-}
-sub close_child {
-    my $pid = shift;
-    kill 15, $pid;
-    waitpid $pid, 0;
-}
-sub set_default {
-}
-sub override {
-    *ld_log = \&__ld_log;
-    *get_status = \&__get_status;
-}
-sub __get_status {
-    return $main::SERVICE_UP;
-}
-sub __ld_log {
-}
diff --git a/l7directord/t/28_ping.t b/l7directord/t/28_ping.t
deleted file mode 100644 (file)
index eb11ae0..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-use strict;
-use warnings;
-no warnings qw(redefine once);
-use lib qw(t/lib lib);
-use subs qw(print);
-use Cwd;
-use L7lib;
-use Test::More tests => 4;
-use IO::Socket::INET;
-
-L7lib::chdir();
-L7lib::comment_out();
-require './l7directord';
-override();
-
-#...............................................
-# test start
-#   - check_ping
-#### IPv6 Ping
-SKIP: {
-    skip 'icmp ping requires root privilege', 1 if $< != 0;
-    set_default();
-    my $v = { checktimeout => 1 };
-    my $r = { server => {ip => '2001::11'} , fail_counts => 0 };
-    my $got = check_ping($v, $r);
-    is $got, $main::SERVICE_UP, 'check_ping - ping ok';
-}
-SKIP: {
-    skip 'icmp ping requires root privilege', 1 if $< != 0;
-    set_default();
-    my $v = { checktimeout => 2 };
-    my $r = { server => {ip => '2001::19'} , fail_counts => 0 };
-    my $got = check_ping($v, $r);
-    is $got, $main::SERVICE_DOWN, 'check_ping - timeout';
-}
-SKIP: {
-    skip 'icmp ping requires root privilege', 1 if $< != 0;
-    set_default();
-    my $v = { checktimeout => 3 };
-    my $r = { server => {ip => '127.0.0.1'} , fail_counts => 0 };
-    my $got = check_ping($v, $r);
-    is $got, $main::SERVICE_UP, 'check_ping - ping ok';
-}
-SKIP: {
-    skip 'icmp ping requires root privilege', 1 if $< != 0;
-    set_default();
-    my $v = { checktimeout => 1 };
-    my $r = { server => {ip => '128.0.0.1'} , fail_counts => 0 };
-    my $got = check_ping($v, $r);
-    is $got, $main::SERVICE_DOWN, 'check_ping - timeout';
-}
-# test end
-#...............................................
-
-L7lib::comment_in();
-
-sub set_default {
-}
-sub override {
-    *ld_log = \&__ld_log;
-    *get_status = \&__get_status;
-}
-sub __get_status {
-    return $main::SERVICE_UP;
-}
-sub __ld_log {
-}
diff --git a/l7directord/t/29_check_other.t b/l7directord/t/29_check_other.t
deleted file mode 100644 (file)
index febc89d..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
-use strict;
-use warnings;
-no warnings qw(redefine once);
-use lib qw(t/lib lib);
-use subs qw(print);
-use Cwd;
-use L7lib;
-use Test::More tests => 6;
-use IO::Socket::INET;
-use Socket;
-use Socket6;
-
-L7lib::chdir();
-L7lib::comment_out();
-require './l7directord';
-override();
-
-#...............................................
-# test start
-#   - check_none
-{
-    set_default();
-    my $v = { checktimeout => 3 };
-    my $r = { server => {ip => '127.0.0.1'} , fail_counts => 0 };
-    my $got = check_none($v, $r);
-    is $got, $main::SERVICE_UP, 'check_none - ok';
-}
-#   - check_off
-{
-    set_default();
-    my $v = { checktimeout => 3 };
-    my $r = { server => {ip => '127.0.0.1'} , fail_counts => 0 };
-    my $got = check_off($v, $r);
-    is $got, $main::SERVICE_DOWN, 'check_off - ok';
-}
-#   - check_on
-{
-    set_default();
-    my $v = { checktimeout => 3 };
-    my $r = { server => {ip => '127.0.0.1'} , fail_counts => 0 };
-    my $got = check_on($v, $r);
-    is $got, $main::SERVICE_UP, 'check_on - ok';
-}
-#############################################################
-### IPv6 
-{
-    set_default();
-    my $v = { checktimeout => 3 };
-    my $r = { server => {ip => '[::1]'} , fail_counts => 0 };
-    my $got = check_none($v, $r);
-    is $got, $main::SERVICE_UP, 'check_none - ok';
-}
-#   - check_off
-{
-    set_default();
-    my $v = { checktimeout => 3 };
-    my $r = { server => {ip => '[::1]'} , fail_counts => 0 };
-    my $got = check_off($v, $r);
-    is $got, $main::SERVICE_DOWN, 'check_off - ok';
-}
-#   - check_on
-{
-    set_default();
-    my $v = { checktimeout => 3 };
-    my $r = { server => {ip => '[::1]'} , fail_counts => 0 };
-    my $got = check_on($v, $r);
-    is $got, $main::SERVICE_UP, 'check_on - ok';
-}
-
-# test end
-#...............................................
-
-L7lib::comment_in();
-
-sub set_default {
-}
-sub override {
-    *ld_log = \&__ld_log;
-}
-sub __ld_log {
-}
diff --git a/l7directord/t/30_status.t b/l7directord/t/30_status.t
deleted file mode 100644 (file)
index 8340add..0000000
+++ /dev/null
@@ -1,163 +0,0 @@
-use strict;
-use warnings;
-no warnings qw(redefine once);
-use lib qw(t/lib lib);
-use subs qw(print);
-use Cwd;
-use L7lib;
-use Test::More tests => 21;
-use Socket;
-use Socket6;
-
-L7lib::chdir();
-L7lib::comment_out();
-require './l7directord';
-override();
-
-our @get_health_check_id_str_args = ();
-our @get_health_check_id_str_returns = ();
-our @fallback_on_args = ();
-our @fallback_off_args = ();
-our @__restore_service_args = ();
-our @__remove_service_args = ();
-
-#...............................................
-# test start
-#   - service_set
-#   - _service_up
-#   - _service_down
-#   - _status_up
-#   - _status_down
-#   - get_status
-{
-    set_default();
-    my $v_r_list = undef;
-    my $state = undef;
-    service_set($v_r_list, $state);
-    pass 'service_set - state is undef';
-}
-{
-    set_default();
-    my $v_r_list = undef;
-    my $state = 'up';
-    service_set($v_r_list, $state);
-    pass 'service_set - v_r_list is undef(1)';
-}
-{
-    set_default();
-    my $v_r_list = undef;
-    my $state = 'down';
-    service_set($v_r_list, $state);
-    pass 'service_set - v_r_list is undef(2)';
-}
-{
-    local @get_health_check_id_str_args    = ();
-    local @get_health_check_id_str_returns = ('id1');
-    set_default();
-    my $v_r_list = [ ['v', 'r'] ];
-    my $state = 'up';
-    local $main::HEALTH_CHECK{id1}{status} = $main::SERVICE_UP;
-    service_set($v_r_list, $state);
-    is_deeply \@get_health_check_id_str_args, [['v', 'r']], 'service_set - set up, but already up';
-}
-{
-    local @get_health_check_id_str_args    = ();
-    local @get_health_check_id_str_returns = ('id2');
-    set_default();
-    my $v_r_list = [ ['v', 'r'] ];
-    my $state = 'down';
-    local $main::HEALTH_CHECK{id2}{status} = $main::SERVICE_DOWN;
-    service_set($v_r_list, $state);
-    is_deeply \@get_health_check_id_str_args, [['v', 'r']], 'service_set - set down, but already down';
-}
-{
-    local @get_health_check_id_str_args    = ();
-    local @get_health_check_id_str_returns = ('id1', 'id1');
-    local @fallback_off_args = ();
-    local @__restore_service_args = ();
-    set_default();
-    my $v_r_list = [ ['v', 'r'] ];
-    my $state = 'up';
-    local $main::HEALTH_CHECK{id1}{status} = $main::SERVICE_DOWN;
-    service_set($v_r_list, $state);
-    is_deeply \@get_health_check_id_str_args, [['v', 'r'], ['v', 'r']], 'service_set - set up';
-    is_deeply \@fallback_off_args, ['v'], 'service_set - set up - fallback off args';
-    is_deeply \@__restore_service_args, ['v', 'r', 'real'], 'service_set - set up - restore service args';
-    is $main::HEALTH_CHECK{id1}{status}, $main::SERVICE_UP, 'service_set - status is changed to up';
-}
-{
-    local @get_health_check_id_str_args    = ();
-    local @get_health_check_id_str_returns = ('id2', 'id2');
-    local @fallback_on_args = ();
-    local @__remove_service_args = ();
-    set_default();
-    my $v_r_list = [ ['v', 'r'] ];
-    my $state = 'down';
-    local $main::HEALTH_CHECK{id2}{status} = $main::SERVICE_UP;
-    service_set($v_r_list, $state);
-    is_deeply \@get_health_check_id_str_args, [['v', 'r'], ['v', 'r']], 'service_set - set down';
-    is_deeply \@fallback_on_args, ['v'], 'service_set - set up - fallback on args';
-    is_deeply \@__remove_service_args, ['v', 'r', 'real'], 'service_set - set up - remove service args';
-    is $main::HEALTH_CHECK{id2}{status}, $main::SERVICE_DOWN, 'service_set - status is changed to down';
-}
-{
-    local @get_health_check_id_str_args    = ();
-    local @get_health_check_id_str_returns = ('id1', 'id1');
-    local @fallback_off_args = ();
-    local @__restore_service_args = ();
-    set_default();
-    my $v_r_list = [ ['v', 'r'] ];
-    my $state = 'up';
-    service_set($v_r_list, $state);
-    is_deeply \@get_health_check_id_str_args, [['v', 'r'], ['v', 'r']], 'service_set - set up, but not defined id';
-    is_deeply \@fallback_off_args, ['v'], 'service_set - set up - fallback off args';
-    is_deeply \@__restore_service_args, ['v', 'r', 'real'], 'service_set - set up - restore service args';
-    is $main::HEALTH_CHECK{id1}{status}, $main::SERVICE_UP, 'service_set - status is registerd as up';
-}
-{
-    local @get_health_check_id_str_args    = ();
-    local @get_health_check_id_str_returns = ('id2', 'id2');
-    local @fallback_on_args = ();
-    local @__remove_service_args = ();
-    set_default();
-    my $v_r_list = [ ['v', 'r'] ];
-    my $state = 'down';
-    service_set($v_r_list, $state);
-    is_deeply \@get_health_check_id_str_args, [['v', 'r'], ['v', 'r']], 'service_set - set down, but not defined id';
-    is_deeply \@fallback_on_args, ['v'], 'service_set - set up - fallback on args';
-    is_deeply \@__remove_service_args, ['v', 'r', 'real'], 'service_set - set up - remove service args';
-    is $main::HEALTH_CHECK{id2}{status}, $main::SERVICE_DOWN, 'service_set - status is registerd as down';
-}
-# test end
-#...............................................
-
-L7lib::comment_in();
-
-sub set_default {
-}
-sub override {
-    *ld_log = \&__ld_log;
-    *get_health_check_id_str = \&__get_health_check_id_str;
-    *fallback_on = \&__fallback_on;
-    *fallback_off = \&__fallback_off;
-    *_restore_service = \&___restore_service;
-    *_remove_service = \&___remove_service;
-}
-sub __get_health_check_id_str {
-    push @get_health_check_id_str_args, [@_];
-    return shift @get_health_check_id_str_returns;
-}
-sub __fallback_on {
-    push @fallback_on_args, @_;
-}
-sub __fallback_off {
-    push @fallback_off_args, @_;
-}
-sub ___restore_service {
-    push @__restore_service_args, @_;
-}
-sub ___remove_service {
-    push @__remove_service_args, @_;
-}
-sub __ld_log {
-}
diff --git a/l7directord/t/31_fallback.t b/l7directord/t/31_fallback.t
deleted file mode 100644 (file)
index a6b6edc..0000000
+++ /dev/null
@@ -1,110 +0,0 @@
-use strict;
-use warnings;
-no warnings qw(redefine once);
-use lib qw(t/lib lib);
-use subs qw(print);
-use Cwd;
-use L7lib;
-use Test::More tests => 10;
-use Socket;
-use Socket6;
-
-L7lib::chdir();
-L7lib::comment_out();
-require './l7directord';
-override();
-
-our @_status_up_args = ();
-our @_status_up_returns = ();
-our @_status_down_args = ();
-our @_status_down_returns = ();
-our @__restore_service_args = ();
-our @__remove_service_args = ();
-
-#...............................................
-# test start
-#   - fallback_on
-#   - fallback_off
-#   - fallback_find
-{
-    set_default();
-    my $v = undef;
-    fallback_on($v);
-    pass 'fallback_on - v is undef';
-}
-{
-    set_default();
-    my $v = undef;
-    fallback_off($v);
-    pass 'fallback_off - v is undef';
-}
-{
-    set_default();
-    local @_status_up_args = ();
-    local @_status_up_returns = (1);
-    local @__restore_service_args = ();
-    my $v = { fallback => { tcp => 'r' } };
-    fallback_on($v);
-    is_deeply \@_status_up_args, [[[$v, 'r']], 'fallback'], 'fallback_on - status change to up';
-    is_deeply \@__restore_service_args, [$v, 'r', 'fallback'], 'fallback_on - restore service args';
-}
-{
-    set_default();
-    local @_status_down_args = ();
-    local @_status_down_returns = (1);
-    local @__remove_service_args = ();
-    my $v = { fallback => { tcp => 'r' } };
-    fallback_off($v);
-    is_deeply \@_status_down_args, [[[$v, 'r']], 'fallback'], 'fallback_off - status change to down';
-    is_deeply \@__remove_service_args, [$v, 'r', 'fallback'], 'fallback_off - remove service args';
-}
-{
-    set_default();
-    local @_status_up_args = ();
-    local @_status_up_returns = (0);
-    local @__restore_service_args = ();
-    my $v = { fallback => { tcp => 'r' } };
-    fallback_on($v);
-    is_deeply \@_status_up_args, [[[$v, 'r']], 'fallback'], 'fallback_on - status is not changed';
-    is_deeply \@__restore_service_args, [], 'fallback_on - restore service no args';
-}
-{
-    set_default();
-    local @_status_down_args = ();
-    local @_status_down_returns = (0);
-    local @__remove_service_args = ();
-    my $v = { fallback => { tcp => 'r' } };
-    fallback_off($v);
-    is_deeply \@_status_down_args, [[[$v, 'r']], 'fallback'], 'fallback_off - status is not changed';
-    is_deeply \@__remove_service_args, [], 'fallback_off - remove service no args';
-}
-# test end
-#...............................................
-
-L7lib::comment_in();
-
-sub set_default {
-}
-sub override {
-    *ld_log = \&__ld_log;
-    *_status_up = \&___status_up;
-    *_status_down = \&___status_down;
-    *_restore_service = \&___restore_service;
-    *_remove_service = \&___remove_service;
-}
-sub ___status_up {
-    push @_status_up_args, @_;
-    return shift @_status_up_returns;
-}
-sub ___status_down {
-    push @_status_down_args, @_;
-    return shift @_status_down_returns;
-}
-sub ___restore_service {
-    push @__restore_service_args, @_;
-}
-sub ___remove_service {
-    push @__remove_service_args, @_;
-}
-sub __ld_log {
-}
diff --git a/l7directord/t/32_getid.t b/l7directord/t/32_getid.t
deleted file mode 100644 (file)
index 3a9abd5..0000000
+++ /dev/null
@@ -1,322 +0,0 @@
-use strict;
-use warnings;
-no warnings qw(redefine once);
-use lib qw(t/lib lib);
-use subs qw(print);
-use Cwd;
-use L7lib;
-use Test::More tests => 46;
-
-L7lib::chdir();
-L7lib::comment_out();
-require './l7directord';
-override();
-
-#...............................................
-# test start
-#   - get_ip_port
-{
-    my $host = undef;
-    my $checkport = undef;
-    my $got = get_ip_port($host, $checkport);
-    is $got, '', 'get_ip_port - host and checkport is undef';
-}
-{
-    my $host = { server => { ip => '127.0.0.1', port => undef } };
-    my $checkport = undef;
-    my $got = get_ip_port($host, $checkport);
-    is $got, '', 'get_ip_port - host port and checkport is undef';
-}
-{
-    my $host = { server => { ip => undef, port => undef } };
-    my $checkport = 100;
-    my $got = get_ip_port($host, $checkport);
-    is $got, '', 'get_ip_port - host ip is undef';
-}
-{
-    my $host = { server => { ip => '127.0.0.1', port => 80 } };
-    my $checkport = undef;
-    my $got = get_ip_port($host, $checkport);
-    is $got, '127.0.0.1:80', 'get_ip_port - get host ip and port';
-}
-{
-    my $host = { server => { ip => '127.0.0.1', port => 80 } };
-    my $checkport = 8080;
-    my $got = get_ip_port($host, $checkport);
-    is $got, '127.0.0.1:8080', 'get_ip_port - get host ip and checkport';
-}
-{
-    my $host = { server => { ip => '127.0.0.1', port => 0 } };
-    my $checkport = undef;
-    my $got = get_ip_port($host, $checkport);
-    is $got, '127.0.0.1:0', 'get_ip_port - get host ip and port zero';
-}
-####### IPv6
-{
-    my $host = { server => { ip => '::', port => undef } };
-    my $checkport = undef;
-    my $got = get_ip_port($host, $checkport);
-    is $got, '', 'get_ip_port - host port and checkport is undef';
-}
-{
-    my $host = { server => { ip => '::1', port => 80 } };
-    my $checkport = undef;
-    my $got = get_ip_port($host, $checkport);
-    is $got, '[::1]:80', 'get_ip_port - get host ip6 and port';
-}
-{
-    my $host = { server => { ip => '::1', port => 80 } };
-    my $checkport = 8080;
-    my $got = get_ip_port($host, $checkport);
-    is $got, '[::1]:8080', 'get_ip_port - get host ip6 and checkport';
-}
-{
-    my $host = { server => { ip => '::1', port => 0 } };
-    my $checkport = undef;
-    my $got = get_ip_port($host, $checkport);
-    is $got, '[::1]:0', 'get_ip_port - get host ip6 and port zero';
-}
-{
-    my $host = { server => { ip => 'fe80::200:1aff:fe19:5534%eth0', port => 0 } };
-    my $checkport = undef;
-    my $got = get_ip_port($host, $checkport);
-    is $got, '[fe80::200:1aff:fe19:5534%eth0]:0', 'get_ip_port - get host ip6(LinkLocal) and port zero';
-}
-#   - get_health_check_id_str
-{
-    my $v = undef;
-    my $r = { server => {} };
-    my $got = get_health_check_id_str($v, $r);
-    is $got, undef, 'get_health_check_id_str - v is undef';
-}
-{
-    my $v = {};
-    my $r = undef;
-    my $got = get_health_check_id_str($v, $r);
-    is $got, undef, 'get_health_check_id_str - r is undef';
-}
-{
-    my $v = {};
-    my $r = {};
-    my $got = get_health_check_id_str($v, $r);
-    is $got, undef, 'get_health_check_id_str - r->{server} is undef';
-}
-{
-    my $v = {};
-    my $r = { server => {} };
-    my $got = get_health_check_id_str($v, $r);
-    is $got, '::::::::::::::::::', 'get_health_check_id_str - all args is ok(empty)';
-}
-{
-    my $v = {};
-    my $r = { server => { ip => 1 } };
-    my $got = get_health_check_id_str($v, $r);
-    is $got, '1::::::::::::::::::', 'get_health_check_id_str - set real ip';
-}
-{
-    my $v = {};
-    my $r = { server => { port => 1 } };
-    my $got = get_health_check_id_str($v, $r);
-    is $got, ':1:::::::::::::::::', 'get_health_check_id_str - set real port';
-}
-{
-    my $v = { checkport => 1 };
-    my $r = { server => {} };
-    my $got = get_health_check_id_str($v, $r);
-    is $got, ':1:::::::::::::::::', 'get_health_check_id_str - set checkport';
-}
-{
-    my $v = { checktype => 'connect' };
-    my $r = { server => {} };
-    my $got = get_health_check_id_str($v, $r);
-    is $got, '::connect::::::::::::::::', 'get_health_check_id_str - set checktype';
-}
-{
-    my $v = { service => 'http' };
-    my $r = { server => {} };
-    my $got = get_health_check_id_str($v, $r);
-    is $got, ':::http:::::::::::::::', 'get_health_check_id_str - set service';
-}
-{
-    my $v = { protocol => 'tcp' };
-    my $r = { server => {} };
-    my $got = get_health_check_id_str($v, $r);
-    is $got, '::::tcp::::::::::::::', 'get_health_check_id_str - set protocol';
-}
-{
-    my $v = { num_connects => 1 };
-    my $r = { server => {} };
-    my $got = get_health_check_id_str($v, $r);
-    is $got, ':::::1:::::::::::::', 'get_health_check_id_str - set num_connects';
-}
-{
-    my $v = {};
-    my $r = { server => {}, request => '/' };
-    my $got = get_health_check_id_str($v, $r);
-    is $got, '::::::/::::::::::::', 'get_health_check_id_str - set real request';
-}
-{
-    my $v = {};
-    my $r = { server => {}, receive => 'ok' };
-    my $got = get_health_check_id_str($v, $r);
-    is $got, ':::::::ok:::::::::::', 'get_health_check_id_str - set real receive';
-}
-{
-    my $v = { httpmethod => 'GET' };
-    my $r = { server => {} };
-    my $got = get_health_check_id_str($v, $r);
-    is $got, '::::::::GET::::::::::', 'get_health_check_id_str - set httpmethod';
-}
-{
-    my $v = { virtualhost => 'virtual' };
-    my $r = { server => {} };
-    my $got = get_health_check_id_str($v, $r);
-    is $got, ':::::::::virtual:::::::::', 'get_health_check_id_str - set virtualhost';
-}
-{
-    my $v = { login => 'ftp' };
-    my $r = { server => {} };
-    my $got = get_health_check_id_str($v, $r);
-    is $got, '::::::::::ftp::::::::', 'get_health_check_id_str - set login';
-}
-{
-    my $v = { passwd => 'ftp' };
-    my $r = { server => {} };
-    my $got = get_health_check_id_str($v, $r);
-    is $got, ':::::::::::ftp:::::::', 'get_health_check_id_str - set passwd';
-}
-{
-    my $v = { database => 'template' };
-    my $r = { server => {} };
-    my $got = get_health_check_id_str($v, $r);
-    is $got, '::::::::::::template::::::', 'get_health_check_id_str - set database';
-}
-{
-    my $v = { customcheck => '/bin/echo' };
-    my $r = { server => {} };
-    my $got = get_health_check_id_str($v, $r);
-    is $got, ':::::::::::::/bin/echo:::::', 'get_health_check_id_str - set customcheck';
-}
-{
-    my $v = { checkinterval => 1 };
-    my $r = { server => {} };
-    my $got = get_health_check_id_str($v, $r);
-    is $got, '::::::::::::::1::::', 'get_health_check_id_str - set checkinterval';
-}
-{
-    my $v = { checkcount => 1 };
-    my $r = { server => {} };
-    my $got = get_health_check_id_str($v, $r);
-    is $got, ':::::::::::::::1:::', 'get_health_check_id_str - set checkcount';
-}
-{
-    my $v = { checktimeout => 1 };
-    my $r = { server => {} };
-    my $got = get_health_check_id_str($v, $r);
-    is $got, '::::::::::::::::1::', 'get_health_check_id_str - set checktimeout';
-}
-{
-    my $v = { negotiatetimeout => 1 };
-    my $r = { server => {} };
-    my $got = get_health_check_id_str($v, $r);
-    is $got, ':::::::::::::::::1:', 'get_health_check_id_str - set negotiatetimeout';
-}
-{
-    my $v = { retryinterval => 1 };
-    my $r = { server => {} };
-    my $got = get_health_check_id_str($v, $r);
-    is $got, '::::::::::::::::::1', 'get_health_check_id_str - set retryinterval';
-}
-{
-    my $v = {
-        checkport        => 10,
-        checktype        => 'connect',
-        service          => 'http',
-        protocol         => 'tcp',
-        num_connects     => 2,
-        httpmethod       => 'GET',
-        virtualhost      => 'virtual',
-        login            => 'ftp',
-        passwd           => 'ftp',
-        database         => 'template',
-        customcheck      => '/bin/echo',
-        checkinterval    => 3,
-        checkcount       => 4,
-        checktimeout     => 5,
-        negotiatetimeout => 6,
-        retryinterval    => 7,
-    };
-    my $r = {
-        server  => { ip => 1, port => 1 },
-        request => '/',
-        receive => 'ok',
-    };
-    my $got = get_health_check_id_str($v, $r);
-    is $got, '1:10:connect:http:tcp:2:/:ok:GET:virtual:ftp:ftp:template:/bin/echo:3:4:5:6:7',
-            'get_health_check_id_str - set all';
-}
-#   - get_virtual_id_str
-{
-    my $v = undef;
-    my $got = get_virtual_id_str($v);
-    is $got, undef, 'get_virtual_id_str - v is undef';
-}
-{
-    my $v = {};
-    my $got = get_virtual_id_str($v);
-    is $got, undef, 'get_virtual_id_str - v->{module} is undef';
-}
-{
-    my $v = { module => {} };
-    my $got = get_virtual_id_str($v);
-    is $got, '::', 'get_virtual_id_str - arg is ok(empty)';
-}
-{
-    my $v = { module => {}, protocol => 'tcp' };
-    my $got = get_virtual_id_str($v);
-    is $got, 'tcp::', 'get_virtual_id_str - set protocol';
-}
-{
-    my $v = { module => {}, server => { ip => '127.0.0.1', port => 80 } };
-    my $got = get_virtual_id_str($v);
-    is $got, ':127.0.0.1:80:', 'get_virtual_id_str - set server';
-}
-{
-    my $v = { module => { name => 'cinsert', key => '--cookie-name monkey' } };
-    my $got = get_virtual_id_str($v);
-    is $got, '::cinsert --cookie-name monkey', 'get_virtual_id_str - set module';
-}
-{
-    my $v = {
-        server   => { ip => '127.0.0.1', port => 80 },
-        module   => { name => 'cinsert', key => '--cookie-name monkey' },
-        protocol => 'tcp',
-    };
-    my $got = get_virtual_id_str($v);
-    is $got, 'tcp:127.0.0.1:80:cinsert --cookie-name monkey', 'get_virtual_id_str - set all';
-}
-#   - get_forward_flag
-{
-    my $got = get_forward_flag();
-    is $got, '', 'get_forward_flag - forward is undef';
-}
-{
-    my $got = get_forward_flag('MAsq');
-    is $got, '-m', 'get_forward_flag - forward is masq';
-}
-{
-    my $got = get_forward_flag('MAsqs');
-    is $got, '', 'get_forward_flag - forward is otherwise';
-}
-# test end
-#...............................................
-
-L7lib::comment_in();
-
-sub set_default {
-}
-sub override {
-    *ld_log = \&__ld_log;
-}
-sub __ld_log {
-}
diff --git a/l7directord/t/33_wrapper.t b/l7directord/t/33_wrapper.t
deleted file mode 100644 (file)
index 40b4a4a..0000000
+++ /dev/null
@@ -1,259 +0,0 @@
-use strict;
-use warnings;
-no warnings qw(redefine once);
-use lib qw(t/lib lib);
-use subs qw(print);
-use Cwd;
-use L7lib;
-use Test::More tests => 39;
-use Config;
-use Socket;
-use Socket6;
-
-L7lib::chdir();
-L7lib::comment_out();
-require './l7directord';
-override();
-
-close *STDOUT;
-open  *STDOUT, '>', '/dev/null';
-close *STDERR;
-open  *STDERR, '>', '/dev/null';
-
-#...............................................
-# test start
-#   - command_wrapper
-{
-    my @got = command_wrapper();
-    is_deeply \@got, [$?, ''], 'command_wrapper - args is undef';
-}
-{
-    my @got = command_wrapper('ls');
-    is $got[0], 0, 'command_wrapper - ls is ok';
-    like $got[1], qr/Makefile.*l7directord.*t/s, 'command_wrapper - ls result';
-}
-{
-    my @got = command_wrapper('env LANG=C ls /proc/100000 2>&1');
-    if ( $Config{'use64bitint'} ) {
-        is_deeply \@got, [512, "ls: /proc/100000: No such file or directory\n"], 'command_wrapper - ls /proc/100000(string) is ok';
-    }
-    else {
-        is_deeply \@got, [256, "ls: /proc/100000: No such file or directory\n"], 'command_wrapper - ls /proc/100000(string) is ok';
-    }
-}
-{
-    my @got = command_wrapper('/etc');
-    is_deeply \@got, [-1, undef], 'command_wrapper - no such command';
-}
-#   - system_wrapper
-{
-    my $got = system_wrapper();
-    is $got, 65280, 'system_wrapper - args is undef';
-}
-{
-    my $got = system_wrapper('ls');
-    is $got, 0, 'system_wrapper - ls is ok';
-}
-{
-    my $got = system_wrapper('ls /proc/100000');
-    if ( $Config{'use64bitint'} ) {
-        is $got, 512, 'system_wrapper - ls /proc/100000(string) is ok';
-    }
-    else {
-        is $got, 256, 'system_wrapper - ls /proc/100000(string) is ok';
-    }
-}
-{
-    my $got = system_wrapper('ls', '/proc/100000');
-    if ( $Config{'use64bitint'} ) {
-        is $got, 512, 'system_wrapper - ls /proc/100000(array) is ok';
-    }
-    else {
-        is $got, 256, 'system_wrapper - ls /proc/100000(array) is ok';
-    }
-}
-{
-    my $got = system_wrapper('/etc');
-    is $got, -1, 'system_wrapper - no such command';
-}
-#   - exec_wrapper
-{
-    my $got = exec_wrapper();
-    is $got, 0, 'exec_wrapper - args is undef';
-}
-{
-    my $got = exec_wrapper('/etc');
-    is $got, 0, 'exec_wrapper - no such command';
-}
-#   - ld_gethostbyname
-{
-    my $got = ld_gethostbyname();
-    is $got, undef, 'ld_gethostbyname - name is undef';
-}
-{
-    my $got = ld_gethostbyname('localhost');
-    is $got, '127.0.0.1', 'ld_gethostbyname - resolve localhost';
-}
-{
-    my $got = ld_gethostbyname('0.0.0.0');
-    is $got, '0.0.0.0', 'ld_gethostbyname - already resolved';
-}
-{
-    my $got = ld_gethostbyname('any host name');
-    is $got, undef, 'ld_gethostbyname - cannot resolve';
-}
-#   - ld_getservbyname
-{
-    my $name = undef;
-    my $protocol = 'tcp';
-    my $got = ld_getservbyname($name, $protocol);
-    is $got, undef, 'ld_getservbyname - name is undef';
-}
-{
-    my $name = 'www';
-    my $protocol = undef;
-    my $got = ld_getservbyname($name, $protocol);
-    is $got, 80, 'ld_getservbyname - protocol is undef';
-}
-{
-    my $name = 0;
-    my $protocol = 'tcp';
-    my $got = ld_getservbyname($name, $protocol);
-    is $got, 0, 'ld_getservbyname - name is 0(min)';
-}
-{
-    my $name = 65535;
-    my $protocol = 'tcp';
-    my $got = ld_getservbyname($name, $protocol);
-    is $got, 65535, 'ld_getservbyname - name is 65535(max)';
-}
-{
-    my $name = 65536;
-    my $protocol = 'tcp';
-    my $got = ld_getservbyname($name, $protocol);
-    is $got, undef, 'ld_getservbyname - name is 65536(error)';
-}
-{
-    my $name = 'foobar';
-    my $protocol = 'tcp';
-    my $got = ld_getservbyname($name, $protocol);
-    is $got, undef, 'ld_getservbyname - no such service name';
-}
-{
-    my $name = 'www';
-    my $protocol = 'foo';
-    my $got = ld_getservbyname($name, $protocol);
-    is $got, undef, 'ld_getservbyname - no such protocol name';
-}
-{
-    my $name = 'www';
-    my $protocol = 'tcp';
-    my $got = ld_getservbyname($name, $protocol);
-    is $got, 80, 'ld_getservbyname - resolve www tcp';
-}
-{
-    my $name = 'www';
-    my $protocol = 'udp';
-    my $got = ld_getservbyname($name, $protocol);
-    is $got, 80, 'ld_getservbyname - resolve www udp';
-}
-#   - ld_getservhostbyname
-{
-    my $hostserv = '127.0.0.1:80';
-    my $protocol = 'tcp';
-    my $got = ld_gethostservbyname($hostserv, $protocol);
-    is_deeply $got, { ip => '127.0.0.1', port => 80 }, 'ld_getservhostbyname - resolve localhost:www tcp';
-}
-{
-    my $hostserv = 'localhost:www';
-    my $protocol = 'tcp';
-    my $got = ld_gethostservbyname($hostserv, $protocol);
-    is_deeply $got, { ip => '127.0.0.1', port => 80 }, 'ld_getservhostbyname - resolve localhost:www tcp';
-}
-{
-    my $hostserv = 'localhost:www';
-    my $protocol = 'udp';
-    my $got = ld_gethostservbyname($hostserv, $protocol);
-    is_deeply $got, { ip => '127.0.0.1', port => 80 }, 'ld_getservhostbyname - resolve localhost:www udp';
-}
-{
-    my $hostserv = 'localhost:www';
-    my $protocol = undef;
-    my $got = ld_gethostservbyname($hostserv, $protocol);
-    is_deeply $got, { ip => '127.0.0.1', port => 80 }, 'ld_getservhostbyname - protocol is undef';
-}
-{
-    my $hostserv = 'localhost:www';
-    my $protocol = 'foo';
-    my $got = ld_gethostservbyname($hostserv, $protocol);
-    is $got, undef, 'ld_getservhostbyname - no such protocol';
-}
-{
-    my $hostserv = 'foo-bar-host:www';
-    my $protocol = 'tcp';
-    my $got = ld_gethostservbyname($hostserv, $protocol);
-    is $got, undef, 'ld_getservhostbyname - invalid host address';
-}
-{
-    my $hostserv = 'localhost:foobar';
-    my $protocol = 'tcp';
-    my $got = ld_gethostservbyname($hostserv, $protocol);
-    is $got, undef, 'ld_getservhostbyname - invalid service name';
-}
-{
-    my $hostserv = undef;
-    my $protocol = 'tcp';
-    my $got = ld_gethostservbyname($hostserv, $protocol);
-    is $got, undef, 'ld_getservhostbyname - hostserv is undef';
-}
-{
-    my $hostserv = 'localhost';
-    my $protocol = 'tcp';
-    my $got = ld_gethostservbyname($hostserv, $protocol);
-    is $got, undef, 'ld_getservhostbyname - hostserv is invalid format';
-}
-##########################################################
-### IPv6 
-#   - ld_getservhostbyname
-{
-    my $hostserv = '[2001::11]:80';
-    my $protocol = 'tcp';
-    my $got = ld_gethostservbyname($hostserv, $protocol);
-    is_deeply $got, { ip => '2001::11', port => 80 }, 'ld_getservhostbyname - [2001::11]:80 tcp';
-}
-{
-    my $hostserv = '[2001::11]:www';
-    my $protocol = 'udp';
-    my $got = ld_gethostservbyname($hostserv, $protocol);
-    is_deeply $got, { ip => '2001::11', port => 80 }, 'ld_getservhostbyname - resolve localhost:www udp';
-}
-{
-    my $hostserv = 'um08eth1ipv6:www';
-    my $protocol = undef;
-    my $got = ld_gethostservbyname($hostserv, $protocol);
-    is_deeply $got, { ip => '2001::11', port => 80 }, 'ld_getservhostbyname - protocol is undef';
-}
-{
-    my $hostserv = '10.144.169.222:www';
-    my $protocol = 'foo';
-    my $got = ld_gethostservbyname($hostserv, $protocol);
-    is $got, undef, 'ld_getservhostbyname - no such protocol';
-}
-{
-    my $hostserv = 'localhost6:80';
-    my $protocol = 'tcp';
-    my $got = ld_gethostservbyname($hostserv, $protocol);
-    is_deeply $got, { ip => '::1'     , port => 80 }, 'ld_getservhostbyname - invalid host address';
-}
-# test end
-#...............................................
-
-L7lib::comment_in();
-
-sub set_default {
-}
-sub override {
-    *ld_log = \&__ld_log;
-}
-sub __ld_log {
-}
diff --git a/l7directord/t/34_change_service.t b/l7directord/t/34_change_service.t
deleted file mode 100644 (file)
index 37c298a..0000000
+++ /dev/null
@@ -1,293 +0,0 @@
-use strict;
-use warnings;
-no warnings qw(redefine once);
-use lib qw(t/lib lib);
-use subs qw(print);
-use Cwd;
-use L7lib;
-use Test::More tests => 27;
-use Socket;
-use Socket6;
-
-L7lib::chdir();
-L7lib::comment_out();
-require './l7directord';
-override();
-
-our $get_virtual_id_str_arg    = undef;
-our $get_virtual_id_str_return = undef;
-our $ld_read_l7vsadm_return    = undef;
-our $ld_add_real_arg           = ();
-our $ld_edit_real_arg          = ();
-our $ld_delete_real_arg        = ();
-our $system_wrapper_arg        = ();
-
-#...............................................
-# test start
-#   - _remove_service
-{
-    set_default();
-    my $v = undef;
-    my $r = undef;
-    my $tag = undef;
-    _remove_service($v, $r, $tag);
-    pass '_remove_service - args is undef';
-}
-{
-    set_default();
-    my $v = {};
-    my $r = {};
-    my $tag = undef;
-    local $get_virtual_id_str_return = 'vipid';
-    local $ld_read_l7vsadm_return    = {};
-    _remove_service($v, $r, $tag);
-    pass '_remove_service - not exist vip id in l7vsadm';
-}
-{
-    set_default();
-    my $v = { quiescent => 0, module => { name => 'cinsert', key => '' } };
-    my $r = { server => { ip => '127.0.0.1', port => 80 } };
-    my $tag = undef;
-    local $get_virtual_id_str_return = 'vipid';
-    local $ld_read_l7vsadm_return    = { vipid => {} };
-    _remove_service($v, $r, $tag);
-    pass '_remove_service - not quiescent and not exist real';
-}
-{
-    set_default();
-    my $v = { quiescent => 1, module => { name => 'cinsert', key => '' } };
-    my $r = { server => { ip => '127.0.0.1', port => 80 }, option => { forward => '-m' } };
-    my $tag = undef;
-    local $get_virtual_id_str_return = 'vipid';
-    local $ld_read_l7vsadm_return    = { vipid => { '127.0.0.1:80' => { weight => 0, option => { forward => '-m' } } } };
-    _remove_service($v, $r, $tag);
-    pass '_remove_service - quiescent and exist real and weight 0, same forward mode';
-}
-{
-    set_default();
-    my $v = { quiescent => 1, module => { name => 'cinsert', key => '' } };
-    my $r = { server => { ip => '127.0.0.1', port => 80 }, option => { forward => '-m' } };
-    my $tag = undef;
-    local $get_virtual_id_str_return = 'vipid';
-    local $ld_read_l7vsadm_return    = { vipid => { '127.0.0.1:80' => { weight => 1, option => { forward => '-m' } } } };
-    _remove_service($v, $r, $tag);
-    is_deeply $ld_edit_real_arg, [$v, $r, 0], '_remove_service - quiescent and exist real, no realdowncallback';
-}
-{
-    set_default();
-    my $v = { quiescent => 1, realdowncallback => '/bin/sh', module => { name => 'cinsert', key => '' } };
-    my $r = { server => { ip => '127.0.0.1', port => 80 }, option => { forward => '-m' } };
-    my $tag = undef;
-    local $get_virtual_id_str_return = 'vipid';
-    local $ld_read_l7vsadm_return    = { vipid => { '127.0.0.1:80' => { weight => 1, option => { forward => '-m' } } } };
-    _remove_service($v, $r, $tag);
-    is_deeply $ld_edit_real_arg, [$v, $r, 0], '_remove_service - quiescent and exist real, realdowncallback, first healthcheck';
-}
-{
-    set_default();
-    my $v = { quiescent => 1, realdowncallback => '/bin/sh', module => { name => 'cinsert', key => '' } };
-    my $r = { server => { ip => '127.0.0.1', port => 80 }, option => { forward => '-m' }, healthchecked => 1 };
-    my $tag = undef;
-    local $get_virtual_id_str_return = 'vipid';
-    local $ld_read_l7vsadm_return    = { vipid => { '127.0.0.1:80' => { weight => 1, option => { forward => '-m' } } } };
-    _remove_service($v, $r, $tag);
-    is_deeply $ld_edit_real_arg, [$v, $r, 0], '_remove_service - quiescent and exist real, realdowncallback, not first healthcheck';
-    is_deeply $system_wrapper_arg, ['/bin/sh', '127.0.0.1:80'], '_remove_service - run realdowncallback';
-}
-{
-    set_default();
-    my $v = { quiescent => 1, module => { name => 'cinsert', key => '' } };
-    my $r = { server => { ip => '127.0.0.1', port => 80 }, option => { forward => '-m' } };
-    my $tag = undef;
-    local $get_virtual_id_str_return = 'vipid';
-    local $ld_read_l7vsadm_return    = { vipid => {} };
-    _remove_service($v, $r, $tag);
-    is_deeply $ld_add_real_arg, [$v, $r, 0], '_remove_service - quiescent and not exist real, no realdowncallback';
-}
-{
-    set_default();
-    my $v = { quiescent => 1, realdowncallback => '/bin/sh', module => { name => 'cinsert', key => '' } };
-    my $r = { server => { ip => '127.0.0.1', port => 80 }, option => { forward => '-m' } };
-    my $tag = undef;
-    local $get_virtual_id_str_return = 'vipid';
-    local $ld_read_l7vsadm_return    = { vipid => {} };
-    _remove_service($v, $r, $tag);
-    is_deeply $ld_add_real_arg, [$v, $r, 0], '_remove_service - quiescent and not exist real, realdowncallback, first healthcheck';
-}
-{
-    set_default();
-    my $v = { quiescent => 1, realdowncallback => '/bin/sh', module => { name => 'cinsert', key => '' } };
-    my $r = { server => { ip => '127.0.0.1', port => 80 }, option => { forward => '-m' }, healthchecked => 1 };
-    my $tag = undef;
-    local $get_virtual_id_str_return = 'vipid';
-    local $ld_read_l7vsadm_return    = { vipid => {} };
-    _remove_service($v, $r, $tag);
-    is_deeply $ld_add_real_arg, [$v, $r, 0], '_remove_service - quiescent and not exist real, realdowncallback, not first healthcheck';
-    is_deeply $system_wrapper_arg, ['/bin/sh', '127.0.0.1:80'], '_remove_service - run realdowncallback';
-}
-{
-    set_default();
-    my $v = { quiescent => 0, module => { name => 'cinsert', key => '' } };
-    my $r = { server => { ip => '127.0.0.1', port => 80 }, option => { forward => '-m' } };
-    my $tag = undef;
-    local $get_virtual_id_str_return = 'vipid';
-    local $ld_read_l7vsadm_return    = { vipid => { '127.0.0.1:80' => { weight => 1, option => { forward => '-m' } } } };
-    _remove_service($v, $r, $tag);
-    is_deeply $ld_delete_real_arg, [$v, $r], '_remove_service - no quiescent and exist real, no realdowncallback';
-}
-{
-    set_default();
-    my $v = { quiescent => 0, realdowncallback => '/bin/sh', module => { name => 'cinsert', key => '' } };
-    my $r = { server => { ip => '127.0.0.1', port => 80 }, option => { forward => '-m' } };
-    my $tag = undef;
-    local $get_virtual_id_str_return = 'vipid';
-    local $ld_read_l7vsadm_return    = { vipid => { '127.0.0.1:80' => { weight => 1, option => { forward => '-m' } } } };
-    _remove_service($v, $r, $tag);
-    is_deeply $ld_delete_real_arg, [$v, $r], '_remove_service - no quiescent and exist real, realdowncallback, first healthcheck';
-}
-{
-    set_default();
-    my $v = { quiescent => 0, realdowncallback => '/bin/sh', module => { name => 'cinsert', key => '' } };
-    my $r = { server => { ip => '127.0.0.1', port => 80 }, option => { forward => '-m' }, healthchecked => 1 };
-    my $tag = undef;
-    local $get_virtual_id_str_return = 'vipid';
-    local $ld_read_l7vsadm_return    = { vipid => { '127.0.0.1:80' => { weight => 1, option => { forward => '-m' } } } };
-    _remove_service($v, $r, $tag);
-    is_deeply $ld_delete_real_arg, [$v, $r], '_remove_service - no quiescent and exist real, realdowncallback, not first healthcheck';
-    is_deeply $system_wrapper_arg, ['/bin/sh', '127.0.0.1:80'], '_remove_service - run realdowncallback';
-}
-#   - _restore_service
-{
-    set_default();
-    my $v = undef;
-    my $r = undef;
-    my $tag = undef;
-    _restore_service($v, $r, $tag);
-    pass '_restore_service - args is undef';
-}
-{
-    set_default();
-    my $v = {};
-    my $r = {};
-    my $tag = undef;
-    local $get_virtual_id_str_return = 'vipid';
-    local $ld_read_l7vsadm_return    = {};
-    _restore_service($v, $r, $tag);
-    pass '_restore_service - not exist vip id in l7vsadm';
-}
-{
-    set_default();
-    my $v = { module => { name => 'cinsert', key => '' } };
-    my $r = { server => { ip => '127.0.0.1', port => 80 }, weight => 1, option => { forward => '-m' } };
-    my $tag = undef;
-    local $get_virtual_id_str_return = 'vipid';
-    local $ld_read_l7vsadm_return    = { vipid => { '127.0.0.1:80' => { weight => 1, option => { forward => '-m' } } } };
-    _restore_service($v, $r, $tag);
-    pass '_restore_service - exist real and same weight, same forward mode';
-}
-{
-    set_default();
-    my $v = { module => { name => 'cinsert', key => '' } };
-    my $r = { server => { ip => '127.0.0.1', port => 80 }, weight => 1, option => { forward => '-m' } };
-    my $tag = undef;
-    local $get_virtual_id_str_return = 'vipid';
-    local $ld_read_l7vsadm_return    = { vipid => { '127.0.0.1:80' => { weight => 2, option => { forward => '-m' } } } };
-    _restore_service($v, $r, $tag);
-    is_deeply $ld_edit_real_arg, [$v, $r, 1], '_restore_service - change weight, no realrecovercallback';
-}
-{
-    set_default();
-    my $v = { module => { name => 'cinsert', key => '' }, realrecovercallback => '/bin/sh' };
-    my $r = { server => { ip => '127.0.0.1', port => 80 }, weight => 1, option => { forward => '-m' } };
-    my $tag = undef;
-    local $get_virtual_id_str_return = 'vipid';
-    local $ld_read_l7vsadm_return    = { vipid => { '127.0.0.1:80' => { weight => 2, option => { forward => '-m' } } } };
-    _restore_service($v, $r, $tag);
-    is_deeply $ld_edit_real_arg, [$v, $r, 1], '_restore_service - change weight, realrecovercallback, first healthcheck';
-}
-{
-    set_default();
-    my $v = { module => { name => 'cinsert', key => '' }, realrecovercallback => '/bin/sh' };
-    my $r = { server => { ip => '127.0.0.1', port => 80 }, weight => 1, option => { forward => '-m' }, healthchecked => 1 };
-    my $tag = undef;
-    local $get_virtual_id_str_return = 'vipid';
-    local $ld_read_l7vsadm_return    = { vipid => { '127.0.0.1:80' => { weight => 2, option => { forward => '-m' } } } };
-    _restore_service($v, $r, $tag);
-    is_deeply $ld_edit_real_arg, [$v, $r, 1], '_restore_service - change weight, realrecovercallback, not first healthcheck';
-    is_deeply $system_wrapper_arg, ['/bin/sh', '127.0.0.1:80'], '_restore_service - run realrecovercallback';
-}
-{
-    set_default();
-    my $v = { module => { name => 'cinsert', key => '' } };
-    my $r = { server => { ip => '127.0.0.1', port => 80 }, weight => 1, option => { forward => '-m' } };
-    my $tag = undef;
-    local $get_virtual_id_str_return = 'vipid';
-    local $ld_read_l7vsadm_return    = { vipid => {} };
-    _restore_service($v, $r, $tag);
-    is_deeply $ld_add_real_arg, [$v, $r, 1], '_restore_service - add real, no realrecovercallback';
-}
-{
-    set_default();
-    my $v = { module => { name => 'cinsert', key => '' }, realrecovercallback => '/bin/sh' };
-    my $r = { server => { ip => '127.0.0.1', port => 80 }, weight => 1, option => { forward => '-m' } };
-    my $tag = undef;
-    local $get_virtual_id_str_return = 'vipid';
-    local $ld_read_l7vsadm_return    = { vipid => {} };
-    _restore_service($v, $r, $tag);
-    is_deeply $ld_add_real_arg, [$v, $r, 1], '_restore_service - add real, realrecovercallback, first healthcheck';
-}
-{
-    set_default();
-    my $v = { module => { name => 'cinsert', key => '' }, realrecovercallback => '/bin/sh' };
-    my $r = { server => { ip => '127.0.0.1', port => 80 }, weight => 1, option => { forward => '-m' }, healthchecked => 1 };
-    my $tag = undef;
-    local $get_virtual_id_str_return = 'vipid';
-    local $ld_read_l7vsadm_return    = { vipid => {} };
-    _restore_service($v, $r, $tag);
-    is_deeply $ld_add_real_arg, [$v, $r, 1], '_restore_service - add real, realrecovercallback, not first healthcheck';
-    is_deeply $system_wrapper_arg, ['/bin/sh', '127.0.0.1:80'], '_restore_service - run realrecovercallback';
-}
-# test end
-#...............................................
-
-L7lib::comment_in();
-
-sub set_default {
-    $get_virtual_id_str_arg    = undef;
-    $get_virtual_id_str_return = undef;
-    $ld_read_l7vsadm_return    = undef;
-    $ld_add_real_arg           = ();
-    $ld_edit_real_arg          = ();
-    $ld_delete_real_arg        = ();
-    $system_wrapper_arg        = ();
-}
-sub override {
-    *ld_log             = \&__ld_log;
-    *get_virtual_id_str = \&__get_virtual_id_str;
-    *ld_read_l7vsadm    = \&__ld_read_l7vsadm;
-    *ld_add_real        = \&__ld_add_real;
-    *ld_edit_real       = \&__ld_edit_real;
-    *ld_delete_real     = \&__ld_delete_real;
-    *system_wrapper     = \&__system_wrapper;
-}
-sub __get_virtual_id_str {
-    $get_virtual_id_str_arg = shift;
-    return $get_virtual_id_str_return;
-}
-sub __ld_read_l7vsadm {
-    return $ld_read_l7vsadm_return;
-}
-sub __ld_add_real {
-    $ld_add_real_arg = [@_];
-}
-sub __ld_edit_real {
-    $ld_edit_real_arg = [@_];
-}
-sub __ld_delete_real {
-    $ld_delete_real_arg = [@_];
-}
-sub __system_wrapper {
-    $system_wrapper_arg = [@_];
-}
-sub __ld_log {
-}
diff --git a/l7directord/t/35_output.t b/l7directord/t/35_output.t
deleted file mode 100644 (file)
index 916c1f3..0000000
+++ /dev/null
@@ -1,251 +0,0 @@
-use strict;
-use warnings;
-no warnings qw(redefine once);
-use lib qw(t/lib lib);
-use subs qw(exit print);
-use Cwd;
-use L7lib;
-use Test::More tests => 33;
-use Socket;
-use Socket6;
-
-L7lib::chdir();
-L7lib::comment_out();
-require './l7directord';
-override();
-
-our $ld_log_called = 0;
-
-close *STDOUT;
-open  *STDOUT, '>', '/dev/null';
-close *STDERR;
-open  *STDERR, '>', '/dev/null';
-
-#...............................................
-# test start
-#   - ld_openlog
-{
-    local *ld_log = \&__ld_log;
-    my $got = ld_openlog();
-    is $got, 1, 'ld_openlog - log_config is undef';
-}
-{
-    local *ld_log = \&__ld_log;
-    local $main::DEBUG_LEVEL = 1;
-    my $got = ld_openlog('logfile');
-    is $got, 0, 'ld_openlog - debug mode';
-}
-{
-    local *ld_log = \&__ld_log;
-    local $main::CONFIG{supervised} = 1;
-    my $got = ld_openlog('logfile');
-    is $got, 0, 'ld_openlog - supervised mode';
-}
-{
-    local *ld_log = \&__ld_log;
-    my $log_config = '/tmp/' . time;
-    my $got = ld_openlog($log_config);
-    is $got, 0, 'ld_openlog - open normal logfile';
-    unlink $log_config;
-}
-{
-    local *ld_log = \&__ld_log;
-    my $log_config = '/tmp';
-    my $got = ld_openlog($log_config);
-    is $got, 1, 'ld_openlog - cannot open normal logfile';
-}
-{
-    local *ld_log = \&__ld_log;
-    my $log_config = 'local0';
-    my $got = ld_openlog($log_config);
-    is $got, 0, 'ld_openlog - open syslog';
-}
-#   - ld_log
-SKIP: {
-    skip 'aboid logging', 1;
-    my $got = ld_log();
-    is $got, 1, 'ld_log - message is undef';
-}
-{
-    local $main::PROC_STAT{pid}  = 12345;
-    local $main::CONFIG{logfile} = '/tmp/' . time;
-    my $got = ld_log('test');
-    is $got, 0, 'ld_log - write message to logfile';
-    unlink $main::CONFIG{logfile};
-}
-{
-    local $main::PROC_STAT{pid}  = 12345;
-    local $main::CONFIG{logfile} = '/tmp';
-    my $got = ld_log('test');
-    is $got, 1, 'ld_log - cannot write message to logfile';
-}
-{
-    local $main::PROC_STAT{pid}  = 12345;
-    local $main::CONFIG{logfile} = 'local0';
-    my $got = ld_log('test');
-    is $got, 0, 'ld_log - write message to syslog';
-}
-{
-    local $main::CONFIG{supervised} = 1;
-    local $main::PROC_STAT{pid}  = 12345;
-    local $main::CONFIG{logfile} = 'local0';
-    my $got = ld_log('test');
-    is $got, 0, 'ld_log - write message to stderr(supervised mode)';
-}
-#   - ld_debug
-{
-    local *ld_log = \&__ld_log;
-    ld_debug();
-    pass 'ld_debug - args is undef';
-}
-{
-    local *ld_log = \&__ld_log;
-    ld_debug(undef, 'test');
-    pass 'ld_debug - priority is undef';
-}
-{
-    local *ld_log = \&__ld_log;
-    ld_debug('fatal', 'test');
-    pass 'ld_debug - priority is string';
-}
-{
-    local *ld_log = \&__ld_log;
-    ld_debug(3, undef);
-    pass 'ld_debug - message is undef';
-}
-{
-    local *ld_log = \&__ld_log;
-    local $main::DEBUG_LEVEL = 10;
-    ld_debug(3, 'debug');
-    pass 'ld_debug - priority and message is ok';
-}
-#   - ld_exit
-{
-    local *ld_log = \&__ld_log;
-    local $main::DEBUG_LEVEL = 0;
-    local $ld_log_called = 0;
-    ld_exit();
-    is $ld_log_called, 0, 'ld_exit - args is undef';
-}
-{
-    local *ld_log = \&__ld_log;
-    local $main::DEBUG_LEVEL = 0;
-    local $ld_log_called = 0;
-    ld_exit(undef, 'exit');
-    is $ld_log_called, 0, 'ld_exit - status is undef';
-}
-{
-    local *ld_log = \&__ld_log;
-    local $main::DEBUG_LEVEL = 0;
-    local $ld_log_called = 0;
-    ld_exit(1, undef);
-    is $ld_log_called, 0, 'ld_exit - message is undef';
-}
-{
-    local *ld_log = \&__ld_log;
-    local $main::DEBUG_LEVEL = 0;
-    local $ld_log_called = 0;
-    ld_exit(0, 'exit');
-    is $ld_log_called, 1, 'ld_exit - status is 0 (normal exit)';
-}
-{
-    local *ld_log = \&__ld_log;
-    local $main::DEBUG_LEVEL = 3;
-    local $ld_log_called = 0;
-    ld_exit(0, 'exit');
-    is $ld_log_called, 1, 'ld_exit - debug enable';
-}
-{
-    local *ld_log = \&__ld_log;
-    local $main::DEBUG_LEVEL = 0;
-    local $ld_log_called = 0;
-    ld_exit(1, 'exit');
-    is $ld_log_called, 1, 'ld_exit - status is 1 (some error)';
-}
-#   - init_error
-{
-    local *ld_log = \&__ld_log;
-    local *ld_exit = \&__ld_exit;
-    local $main::DEBUG_LEVEL = 0;
-    local $ld_log_called = 0;
-    init_error();
-    is $ld_log_called, 0, 'init_error - message is undef';
-}
-{
-    local *ld_log = \&__ld_log;
-    local *ld_exit = \&__ld_exit;
-    local $main::DEBUG_LEVEL = 0;
-    local $ld_log_called = 0;
-    init_error('init error');
-    is $ld_log_called, 1, 'init_error - no debug';
-}
-{
-    local *ld_log = \&__ld_log;
-    local *ld_exit = \&__ld_exit;
-    local $main::DEBUG_LEVEL = 1;
-    local $ld_log_called = 0;
-    init_error('init error');
-    is $ld_log_called, 1, 'init_error - debug mode';
-}
-#   - config_error
-{
-    local *ld_log  = \&__ld_log;
-    local *ld_exit = \&__ld_exit;
-    local $main::CONFIG_FILE{path} = 'filepath';
-    local $main::PROC_STAT{initialized} = 1;
-    local $main::DEBUG_LEVEL = 1;
-    local $ld_log_called = 0;
-    eval { config_error(1, 'WRN0004'); };
-    is $ld_log_called, 0, 'config_error - debug mode';
-    ok $@, 'config_error - initialized and died';
-}
-{
-    local *ld_log  = \&__ld_log;
-    local *ld_exit = \&__ld_exit;
-    local $main::CONFIG_FILE{path} = 'filepath';
-    local $main::PROC_STAT{initialized} = 0;
-    local $main::DEBUG_LEVEL = 1;
-    local $ld_log_called = 0;
-    eval { config_error(1, 'WRN0004'); };
-    is $ld_log_called, 0, 'config_error - debug mode';
-    is $@, '', 'config_error - not initialized exit';
-}
-{
-    local *ld_log  = \&__ld_log;
-    local *ld_exit = \&__ld_exit;
-    local $main::CONFIG_FILE{path} = 'filepath';
-    local $main::PROC_STAT{initialized} = 1;
-    local $main::DEBUG_LEVEL = 0;
-    local $ld_log_called = 0;
-    eval { config_error(0, 'WRN0004'); };
-    is $ld_log_called, 1, 'config_error - no debug mode and line is 0';
-    ok $@, 'config_error - initialized and died';
-}
-{
-    local *ld_log  = \&__ld_log;
-    local *ld_exit = \&__ld_exit;
-    local $main::CONFIG_FILE{path} = 'filepath';
-    local $main::PROC_STAT{initialized} = 1;
-    local $main::DEBUG_LEVEL = 0;
-    local $ld_log_called = 0;
-    eval { config_error(1, 'WRN0004'); };
-    is $ld_log_called, 2, 'config_error - no debug mode and line is 1';
-    ok $@, 'config_error - initialized and died';
-}
-# test end
-#...............................................
-
-L7lib::comment_in();
-
-sub set_default {
-}
-sub override {
-    *exit = \&__exit;
-}
-sub __exit {
-}
-sub __ld_exit {
-}
-sub __ld_log {
-    $ld_log_called++;
-}
diff --git a/l7directord/t/36_require.t b/l7directord/t/36_require.t
deleted file mode 100755 (executable)
index cc7e248..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-use strict;
-use warnings;
-no warnings qw(redefine once);
-use lib qw(t/lib lib);
-use subs qw(print);
-use Cwd;
-use L7lib;
-use Test::More tests => 1;
-use Config;
-use Socket;
-use Socket6;
-
-L7lib::chdir();
-L7lib::comment_out();
-require './l7directord';
-
-override();
-
-#...............................................
-# test start
-#####################
-###  check_require_module
-{
-    default_value();
-    $main::CONFIG{virtual} = [ undef, undef, {
-        service   => 'sip',
-        checktype => 'negotiate',
-    } ];
-##    $expected = [ undef, undef, {
-##        service   => 'sip',
-##        checktype => 'negotiate',
-##    } ];
-    eval {
-        check_require_module();
-    };
-    is_deeply \%main::CONFIG, \%main::CONFIG, 'check_require_module - ok';
-}
-#####################################################################
-# test end
-#...............................................
-
-L7lib::comment_in();
-
-sub default_value {
-    $main::CONFIG_FILE{path} = time;
-    undef $main::CONFIG_FILE{stattime};
-    undef $main::CONFIG_FILE{checksum};
-    $main::PROC_STAT{initialized} = 0;
-    %main::CONFIG = %main::GLOBAL;
-}
-sub create_config {
-    my $input = shift;
-    open my $f, ">", $main::CONFIG_FILE{path} or return 0;
-    print $f $input;
-    close $f;
-    return 1;
-}
-sub remove_config {
-    if (-f $main::CONFIG_FILE{path}) {
-        unlink $main::CONFIG_FILE{path};
-    }
-}
-sub override {
-    *ld_log = \&__ld_log;
-}
-sub __ld_log {
-}
diff --git a/l7directord/t/lib/L7lib.pm b/l7directord/t/lib/L7lib.pm
deleted file mode 100644 (file)
index c7f685d..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-#!/usr/bin/perl 
-package L7lib;
-use strict;
-use warnings;
-use Cwd;
-
-sub chdir {
-    my $pwd = cwd;
-    if ($pwd =~ m{/t$}) {
-        chdir '..';
-    }
-    if ($pwd =~ m{/t/lib$}) {
-        chdir '../..';
-    }
-}
-
-sub comment_in {
-    replace( qr{^#main}, q{main} );
-}
-
-sub comment_out {
-    replace( qr{^main}, q{#main} );
-}
-
-sub replace {
-    my ($before, $after) = @_;
-
-    my $file = -f 'l7directord'    ? 'l7directord'
-             : -f '../l7directord' ? '../l7directord'
-             :                       die 'l7directord not found'
-             ;
-    local $/ = undef;
-    open my $f, '+<', $file or die $!;
-    flock $f, 2;
-    my $org = <$f>;
-    $org =~ s{$before}{$after}m;
-    seek $f, 0, 0;
-    print $f $org;
-    truncate $f, tell $f;
-    close $f;
-}
-1;
diff --git a/l7directord/t/lib/l7vsadm.1 b/l7directord/t/lib/l7vsadm.1
deleted file mode 100644 (file)
index d0a362a..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-#!/usr/bin/perl
-
-use strict;
-use warnings;
-
-print <<"L7VSADM";
-Layer-7 Virtual Server version x.x.x
-Prot LocalAddress:Port ProtoMod Scheduler
-     SSL_config_file
-     Socket option
-     Access_log_flag
-     Access_log_file
-     Access_log_rotate option
-  -> RemoteAddress:Port           Forward Weight ActiveConn InactConn
-L7VSADM
diff --git a/l7directord/t/lib/l7vsadm.103 b/l7directord/t/lib/l7vsadm.103
deleted file mode 100755 (executable)
index 698d2f3..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-#!/usr/bin/perl
-
-use strict;
-use warnings;
-
-print <<"L7VSADM";
-Layer-7 Virtual Server version x.x.x
-Prot LocalAddress:Port ProtoMod Scheduler
-     SSL_config_file
-     Socket option
-     Access_log_flag
-     Access_log_file
-     Access_log_rotate option
-  -> RemoteAddress:Port           Forward Weight ActiveConn InactConn
-TCP [2001::1]:80 ip rr
-    none
-    none
-    0
-    none
-    none
-  -> [fe80::%eth1]:8080             Masq    5      0          3         
-L7VSADM
diff --git a/l7directord/t/lib/l7vsadm.104 b/l7directord/t/lib/l7vsadm.104
deleted file mode 100755 (executable)
index c75341e..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-#!/usr/bin/perl
-
-use strict;
-use warnings;
-
-print <<"L7VSADM";
-Layer-7 Virtual Server version x.x.x
-Prot LocalAddress:Port ProtoMod Scheduler
-     SSL_config_file
-     Socket option
-     Access_log_flag
-     Access_log_file
-     Access_log_rotate option
-  -> RemoteAddress:Port           Forward Weight ActiveConn InactConn
-TCP [2001:1:2:3:4:5:6:7]:80 ip rr
-    none
-    none
-    0
-    none
-    none
-  -> [fe80:ffff:ffff:eeee:dddd:cccc:bbbb:aaaa]:80               Masq    3      0          3         
-  -> [fe80:1:22:333:4444:5:66:777]:80               Masq    2      0          3         
-  -> [fe80:ffff:ffff::ffff:ffff]:80               Masq    1      0          4         
-L7VSADM
diff --git a/l7directord/t/lib/l7vsadm.105 b/l7directord/t/lib/l7vsadm.105
deleted file mode 100755 (executable)
index 41c2d5f..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-#!/usr/bin/perl
-
-use strict;
-use warnings;
-
-print <<"L7VSADM";
-Layer-7 Virtual Server version x.x.x
-Prot LocalAddress:Port ProtoMod Scheduler
-     SSL_config_file
-     Socket option
-     Access_log_flag
-     Access_log_file
-     Access_log_rotate option
-  -> RemoteAddress:Port           Forward Weight ActiveConn InactConn
-TCP [2001::2]:80 sessionless rr
-    /etc/l7vs/ssl/ssl.target_1.cf
-    deferaccept,nodelay,cork,quickackoff
-    1
-    /var/log/l7vs/l7vsd_conn.log
-TCP [::]:8080 sslid rr
-    none
-    deferaccept,nodelay,cork,quickackoff
-    0
-    none
-    none
-TCP [3901:222:333:444:555::]:10000 ip rr
-    none
-    none
-    1
-    none
-    none
-L7VSADM
diff --git a/l7directord/t/lib/l7vsadm.106 b/l7directord/t/lib/l7vsadm.106
deleted file mode 100755 (executable)
index 6a5630b..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-#!/usr/bin/perl
-
-use strict;
-use warnings;
-
-print <<"L7VSADM";
-Layer-7 Virtual Server version x.x.x
-Prot LocalAddress:Port ProtoMod Scheduler
-     SSL_config_file
-     Socket option
-     Access_log_flag
-     Access_log_file
-     Access_log_rotate option
-  -> RemoteAddress:Port           Forward Weight ActiveConn InactConn
-TCP [::]:80 sessionless rr
-    none
-    none
-    1
-    none
-    none
-  -> 192.168.0.1:80               Masq    1      0          3         
-  -> 192.168.0.2:80               Masq    1      0          3         
-TCP [::1]:10 sslid rr
-    none
-    none
-    1
-    none
-    none
-TCP [0:0:0:0:0:0:0:0]:20 ip rr
-    none
-    none
-    1
-    none
-    none
-  -> [222:333:4::55]:80               Masq    1      0          4         
-L7VSADM
diff --git a/l7directord/t/lib/l7vsadm.107 b/l7directord/t/lib/l7vsadm.107
deleted file mode 100755 (executable)
index 3ee6665..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-#!/usr/bin/perl
-
-use strict;
-use warnings;
-
-print <<"L7VSADM";
-Layer-7 Virtual Server version x.x.x
-Prot LocalAddress:Port ProtoMod Scheduler
-     SSL_config_file
-     Socket option
-     Access_log_flag
-     Access_log_file
-     Access_log_rotate option
-  -> RemoteAddress:Port           Forward Weight ActiveConn InactConn
-  -> [::]:80                 Masq    1      0          3         
-  -> [1:2:3:4:5:6:7:8]:25                 Masq    1      0          3         
-  -> [3:4:5::]:8080               Masq    1      0          4         
-L7VSADM
diff --git a/l7directord/t/lib/l7vsadm.108 b/l7directord/t/lib/l7vsadm.108
deleted file mode 100755 (executable)
index d38f462..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/usr/bin/perl
-
-use strict;
-use warnings;
-
-print <<"L7VSADM";
-Layer-7 Virtual Server version x.x.x
-Prot LocalAddress:Port ProtoMod Scheduler
-     SSL_config_file
-     Socket option
-     Access_log_flag
-     Access_log_file
-     Access_log_rotate option
-  -> RemoteAddress:Port           Forward Weight ActiveConn InactConn
-  -> [::1]:80                 Masq    1      0          3         
-TCP [2001::1]:8080 sessionless rr
-    none
-    none
-    1
-    none
-    none
-  -> 192.168.0.2:80               Masq    1      0          4         
-L7VSADM
diff --git a/l7directord/t/lib/l7vsadm.2 b/l7directord/t/lib/l7vsadm.2
deleted file mode 100644 (file)
index 9ea9fc9..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-#!/usr/bin/perl
-
-use strict;
-use warnings;
-
-print <<"L7VSADM";
-Layer-7 Virtual Server version x.x.x
-Prot LocalAddress:Port ProtoMod Scheduler
-     SSL_config_file
-     Socket option
-     Access_log_flag
-     Access_log_file
-     Access_log_rotate option
-  -> RemoteAddress:Port           Forward Weight ActiveConn InactConn
-TCP 10.10.10.1:1234 sessionless rr
-    none
-    none
-    0
-    none
-    none
-L7VSADM
diff --git a/l7directord/t/lib/l7vsadm.3 b/l7directord/t/lib/l7vsadm.3
deleted file mode 100644 (file)
index 24f5fec..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-#!/usr/bin/perl
-
-use strict;
-use warnings;
-
-print <<"L7VSADM";
-Layer-7 Virtual Server version x.x.x
-Prot LocalAddress:Port ProtoMod Scheduler
-     SSL_config_file
-     Socket option
-     Access_log_flag
-     Access_log_file
-     Access_log_rotate option
-  -> RemoteAddress:Port           Forward Weight ActiveConn InactConn
-TCP 127.0.0.1:80 ip rr
-    none
-    none
-    0
-    none
-    none
-  -> 192.168.0.1:8080             Masq    5      0          3         
-L7VSADM
diff --git a/l7directord/t/lib/l7vsadm.4 b/l7directord/t/lib/l7vsadm.4
deleted file mode 100644 (file)
index 0e64b25..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-#!/usr/bin/perl
-
-use strict;
-use warnings;
-
-print <<"L7VSADM";
-Layer-7 Virtual Server version x.x.x
-Prot LocalAddress:Port ProtoMod Scheduler
-     SSL_config_file
-     Socket option
-     Access_log_flag
-     Access_log_file
-     Access_log_rotate option
-  -> RemoteAddress:Port           Forward Weight ActiveConn InactConn
-TCP 127.0.0.1:80 ip rr
-    none
-    none
-    0
-    none
-    none
-  -> 192.168.0.1:80               Masq    3      0          3         
-  -> 192.168.0.2:80               Masq    2      0          3         
-  -> 192.168.0.3:80               Masq    1      0          4         
-L7VSADM
diff --git a/l7directord/t/lib/l7vsadm.5 b/l7directord/t/lib/l7vsadm.5
deleted file mode 100644 (file)
index 730d9a5..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-#!/usr/bin/perl
-
-use strict;
-use warnings;
-
-print <<"L7VSADM";
-Layer-7 Virtual Server version x.x.x
-Prot LocalAddress:Port ProtoMod Scheduler
-     SSL_config_file
-     Socket option
-     Access_log_flag
-     Access_log_file
-     Access_log_rotate option
-  -> RemoteAddress:Port           Forward Weight ActiveConn InactConn
-TCP 127.0.0.1:80 sessionless rr
-    /etc/l7vs/ssl/ssl.target_1.cf
-    deferaccept,nodelay,cork,quickackoff
-    1
-    /var/log/l7vs/l7vsd_conn.log
-TCP 192.168.0.1:8080 sslid rr
-    none
-    deferaccept,nodelay,cork,quickackoff
-    0
-    none
-    none
-TCP 192.168.0.100:10000 ip rr
-    none
-    none
-    1
-    none
-    none
-L7VSADM
diff --git a/l7directord/t/lib/l7vsadm.6 b/l7directord/t/lib/l7vsadm.6
deleted file mode 100644 (file)
index 95da8b1..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-#!/usr/bin/perl
-
-use strict;
-use warnings;
-
-print <<"L7VSADM";
-Layer-7 Virtual Server version x.x.x
-Prot LocalAddress:Port ProtoMod Scheduler
-     SSL_config_file
-     Socket option
-     Access_log_flag
-     Access_log_file
-     Access_log_rotate option
-  -> RemoteAddress:Port           Forward Weight ActiveConn InactConn
-TCP 127.0.0.1:80 sessionless rr
-    none
-    none
-    1
-    none
-    none
-  -> 192.168.0.1:80               Masq    1      0          3         
-  -> 192.168.0.2:80               Masq    1      0          3         
-TCP 10.10.10.10:10 sslid rr
-    none
-    none
-    1
-    none
-    none
-TCP 20.20.20.20:20 ip rr
-    none
-    none
-    1
-    none
-    none
-  -> 192.168.0.1:80               Masq    1      0          4         
-L7VSADM
diff --git a/l7directord/t/lib/l7vsadm.7 b/l7directord/t/lib/l7vsadm.7
deleted file mode 100644 (file)
index 34d5e4b..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-#!/usr/bin/perl
-
-use strict;
-use warnings;
-
-print <<"L7VSADM";
-Layer-7 Virtual Server version x.x.x
-Prot LocalAddress:Port ProtoMod Scheduler
-     SSL_config_file
-     Socket option
-     Access_log_flag
-     Access_log_file
-     Access_log_rotate option
-  -> RemoteAddress:Port           Forward Weight ActiveConn InactConn
-  -> 127.0.0.1:80                 Masq    1      0          3         
-  -> 127.0.0.1:25                 Masq    1      0          3         
-  -> 127.0.0.1:8080               Masq    1      0          4         
-L7VSADM
diff --git a/l7directord/t/lib/l7vsadm.8 b/l7directord/t/lib/l7vsadm.8
deleted file mode 100644 (file)
index fd0fec6..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/usr/bin/perl
-
-use strict;
-use warnings;
-
-print <<"L7VSADM";
-Layer-7 Virtual Server version x.x.x
-Prot LocalAddress:Port ProtoMod Scheduler
-     SSL_config_file
-     Socket option
-     Access_log_flag
-     Access_log_file
-     Access_log_rotate option
-  -> RemoteAddress:Port           Forward Weight ActiveConn InactConn
-  -> 127.0.0.1:80                 Masq    1      0          3         
-TCP 192.168.0.1:8080 sessionless rr
-    none
-    none
-    1
-    none
-    none
-  -> 192.168.0.2:80               Masq    1      0          4         
-L7VSADM