summaryrefslogtreecommitdiff
path: root/test/ptf_test/health_check_test.py
blob: fa48287a876fe7ddf9d9fe8f8e22285aec867469 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
import ptf
from ptf.base_tests import BaseTest
from ptf.testutils import *
from scapy.all import *
from mrzcpd import Mrzcpd
from common_pkt import *
import ptf.mask as mask

base_conf = """
[device]
device=veth0
sz_tunnel=8192
sz_buffer=0

[device:veth0]
promisc=1
mtu=1500
driver=2
role=1

[service]
iocore=1
distmode=2
hashmode=0

[limits]
nr_max_ef_adapters=32
nr_max_vwires=32
nr_max_tera_adapters=32
nr_max_link_dbs=32

[eal]
virtaddr=0x600000000000
loglevel=7
nohuge=1
mem=65535

[keepalive]
check_spinlock=1

[http_server]
listen_addr=127.0.0.1
[ctrlzone]
ctrlzone0=tunnat, 64
ctrlzone1=vsys, 64

[pool]
create_mode=3
sz_direct_pktmbuf=4096
sz_indirect_pktmbuf=4096
sz_cache=256
sz_data=3000

[ctrlmsg]
listen_addr=0.0.0.0
listen_port=46789

[rpc]
addr=127.0.0.1
port=56789

# sid
[ef_adapters]
sid_start=100
sid_end=200
max_rules=256

[vwires]
sid_start=300
sid_end=400
max_rules=256

# health check
[health_check:0]
name=veth0_health_check
device=veth0
method=0
multiplier=20
interval=10

[service_lb]
sid_start=1000
sid_end=2000

# load balance
[load_balance:0]
sid=1000
mode=0
devices=veth0,0
health_check_sessions=veth0_health_check

"""


@group("health_check_base_test")
class HealthCheckBaseTest(BaseTest):
    def setUp(self):
        self.dataplane = ptf.dataplane_instance

    def __init__(self):
        BaseTest.__init__(self)

    def runTest(self):
        try:
            # Init & Start mrzcpd
            mrzcpd = Mrzcpd(base_conf, "")
            mrzcpd.start()

            (_, _, rcv_pkt, _) = dp_poll(
                self, device_number=0, port_number=0, timeout=20
            )

            verify_health_check_pkt = mask.Mask(
                simple_eth_packet(eth_type=0xaaaa, pktlen=22))
            verify_health_check_pkt.set_do_not_care(0, 12*8)
            verify_health_check_pkt.set_do_not_care(14*8, 8*8)

            send_packet(self, 0, rcv_pkt)
            verify_packet(self, verify_health_check_pkt, 0)

        finally:
            mrzcpd.stop()