OSDN Git Service

2009/12/13 一時更新
[ultramonkey-l7/ultramonkey-l7-v3.git] / l7directord / t / 31_fallback.t
1 use strict;
2 use warnings;
3 no warnings qw(redefine once);
4 use lib qw(t/lib lib);
5 use subs qw(print);
6 use Cwd;
7 use L7lib;
8 use Test::More tests => 10;
9 use Socket;
10 use Socket6;
11
12 L7lib::chdir();
13 L7lib::comment_out();
14 require './l7directord';
15 override();
16
17 our @_status_up_args = ();
18 our @_status_up_returns = ();
19 our @_status_down_args = ();
20 our @_status_down_returns = ();
21 our @__restore_service_args = ();
22 our @__remove_service_args = ();
23
24 #...............................................
25 # test start
26 #   - fallback_on
27 #   - fallback_off
28 #   - fallback_find
29 {
30     set_default();
31     my $v = undef;
32     fallback_on($v);
33     pass 'fallback_on - v is undef';
34 }
35 {
36     set_default();
37     my $v = undef;
38     fallback_off($v);
39     pass 'fallback_off - v is undef';
40 }
41 {
42     set_default();
43     local @_status_up_args = ();
44     local @_status_up_returns = (1);
45     local @__restore_service_args = ();
46     my $v = { fallback => { tcp => 'r' } };
47     fallback_on($v);
48     is_deeply \@_status_up_args, [[[$v, 'r']], 'fallback'], 'fallback_on - status change to up';
49     is_deeply \@__restore_service_args, [$v, 'r', 'fallback'], 'fallback_on - restore service args';
50 }
51 {
52     set_default();
53     local @_status_down_args = ();
54     local @_status_down_returns = (1);
55     local @__remove_service_args = ();
56     my $v = { fallback => { tcp => 'r' } };
57     fallback_off($v);
58     is_deeply \@_status_down_args, [[[$v, 'r']], 'fallback'], 'fallback_off - status change to down';
59     is_deeply \@__remove_service_args, [$v, 'r', 'fallback'], 'fallback_off - remove service args';
60 }
61 {
62     set_default();
63     local @_status_up_args = ();
64     local @_status_up_returns = (0);
65     local @__restore_service_args = ();
66     my $v = { fallback => { tcp => 'r' } };
67     fallback_on($v);
68     is_deeply \@_status_up_args, [[[$v, 'r']], 'fallback'], 'fallback_on - status is not changed';
69     is_deeply \@__restore_service_args, [], 'fallback_on - restore service no args';
70 }
71 {
72     set_default();
73     local @_status_down_args = ();
74     local @_status_down_returns = (0);
75     local @__remove_service_args = ();
76     my $v = { fallback => { tcp => 'r' } };
77     fallback_off($v);
78     is_deeply \@_status_down_args, [[[$v, 'r']], 'fallback'], 'fallback_off - status is not changed';
79     is_deeply \@__remove_service_args, [], 'fallback_off - remove service no args';
80 }
81 # test end
82 #...............................................
83
84 L7lib::comment_in();
85
86 sub set_default {
87 }
88 sub override {
89     *ld_log = \&__ld_log;
90     *_status_up = \&___status_up;
91     *_status_down = \&___status_down;
92     *_restore_service = \&___restore_service;
93     *_remove_service = \&___remove_service;
94 }
95 sub ___status_up {
96     push @_status_up_args, @_;
97     return shift @_status_up_returns;
98 }
99 sub ___status_down {
100     push @_status_down_args, @_;
101     return shift @_status_down_returns;
102 }
103 sub ___restore_service {
104     push @__restore_service_args, @_;
105 }
106 sub ___remove_service {
107     push @__remove_service_args, @_;
108 }
109 sub __ld_log {
110 }