1
1
import pytest
2
2
import sys
3
+ import click
3
4
import os
4
5
sys .path .append ('../cli/show/plugins/' )
5
6
import show_dhcp_relay as show
35
36
+-------------+----------------------+
36
37
"""
37
38
39
+ expected_ipv4_table_with_enabled_dhcp_server_with_header = """\
40
+ +-------------+----------------------+
41
+ | Interface | DHCP Relay Address |
42
+ +=============+======================+
43
+ | Vlan1000 | N/A |
44
+ +-------------+----------------------+
45
+ """
46
+
38
47
expected_ipv6_table_without_header = """\
39
48
-------- ------------
40
49
Vlan1000 fc02:2000::1
@@ -86,12 +95,18 @@ def test_plugin_registration():
86
95
assert 'DHCP Helper Address' in dict (vlan .VlanBrief .COLUMNS )
87
96
88
97
89
- def test_dhcp_relay_column_output ():
98
+ @pytest .mark .parametrize ("feature_table" , [{}, {"dhcp_server" : {"state" : "disabled" }},
99
+ {"dhcp_server" : {"state" : "enabled" }}, {"dhcp_server" : {}}])
100
+ def test_dhcp_relay_column_output (feature_table ):
90
101
ctx = (
91
102
({'Vlan1001' : {'dhcp_servers' : ['192.0.0.1' , '192.168.0.2' ]}}, {}, {}),
92
- (),
103
+ (MockDb ({ "FEATURE" : feature_table }) ),
93
104
)
94
- assert show .get_dhcp_helper_address (ctx , 'Vlan1001' ) == '192.0.0.1\n 192.168.0.2'
105
+ if "dhcp_server" in feature_table and "state" in feature_table ["dhcp_server" ] and \
106
+ feature_table ["dhcp_server" ]["state" ] == "enabled" :
107
+ assert show .get_dhcp_helper_address (ctx , 'Vlan1001' ) == 'N/A'
108
+ else :
109
+ assert show .get_dhcp_helper_address (ctx , 'Vlan1001' ) == '192.0.0.1\n 192.168.0.2'
95
110
96
111
97
112
@parameterized .expand (COMMON_TEST_DATA )
@@ -103,7 +118,7 @@ def test_show_dhcp_relay(test_name, test_data, fs):
103
118
config_db = MockConfigDb ()
104
119
ip_version = "ipv4" if "ipv4" in test_name else "ipv6"
105
120
table = config_db .get_table (IP_VER_TEST_PARAM_MAP [ip_version ]["table" ])
106
- if test_name == "ipv4_with_header" :
121
+ if test_name in [ "ipv4_with_header" , "ipv4_with_disabled_dhcp_server_with_header" ] :
107
122
result = show .get_dhcp_relay_data_with_header (table , IP_VER_TEST_PARAM_MAP [ip_version ]["entry" ])
108
123
expected_output = expected_ipv4_table_with_header
109
124
elif test_name == "ipv6_with_header" :
@@ -112,6 +127,9 @@ def test_show_dhcp_relay(test_name, test_data, fs):
112
127
elif test_name == "ipv6_without_header" :
113
128
result = show .get_data (table , "Vlan1000" )
114
129
expected_output = expected_ipv6_table_without_header
130
+ elif test_name == "ipv4_with_enabled_dhcp_server_with_header" :
131
+ result = show .get_dhcp_relay_data_with_header (table , IP_VER_TEST_PARAM_MAP [ip_version ]["entry" ], True )
132
+ expected_output = expected_ipv4_table_with_enabled_dhcp_server_with_header
115
133
assert result == expected_output
116
134
117
135
@@ -153,3 +171,31 @@ def test_show_multi_dhcp_relay(test_name, test_data, fs):
153
171
else :
154
172
expected_output = expected_ipv6_table_multi_with_header
155
173
assert result == expected_output
174
+
175
+
176
+ def test_show_dhcp_relay_ipv4_counter_with_enabled_dhcp_server ():
177
+ with mock .patch .object (show , "is_dhcp_server_enabled" , return_value = True ), \
178
+ mock .patch .object (swsscommon .ConfigDBConnector , "connect" , return_value = None ), \
179
+ mock .patch .object (swsscommon .ConfigDBConnector , "get_table" , return_value = None ), \
180
+ mock .patch .object (click , "echo" , return_value = None ) as mock_echo :
181
+ show .ipv4_counters ("Etherner1" )
182
+ expected_param = "Unsupport to check dhcp_relay ipv4 counter when dhcp_server feature is enabled"
183
+ mock_echo .assert_called_once_with (expected_param )
184
+
185
+
186
+ @pytest .mark .parametrize ("enable_dhcp_server" , [True , False ])
187
+ def test_is_dhcp_server_enabled (enable_dhcp_server ):
188
+ result = show .is_dhcp_server_enabled ({"dhcp_server" : {"state" : "enabled" if enable_dhcp_server else "disabled" }})
189
+ assert result == enable_dhcp_server
190
+
191
+
192
+ class MockDb (object ):
193
+ class MockCfgDb (object ):
194
+ def __init__ (self , mock_cfgdb ):
195
+ self .mock_cfgdb = mock_cfgdb
196
+
197
+ def get_table (self , table_name ):
198
+ return self .mock_cfgdb .get (table_name , {})
199
+
200
+ def __init__ (self , mock_cfgdb ):
201
+ self .cfgdb = self .MockCfgDb (mock_cfgdb )
0 commit comments