Skip to content

Commit ee66cc5

Browse files
committed
add negative tests and check return_code in the tests
Signed-off-by: Arvindsrinivasan Lakshmi Narasimhan <arlakshm@microsoft.com>
1 parent 99f0741 commit ee66cc5

File tree

2 files changed

+66
-30
lines changed

2 files changed

+66
-30
lines changed

scripts/intfutil

+4-4
Original file line numberDiff line numberDiff line change
@@ -14,15 +14,15 @@ from utilities_common.intf_filter import parse_interface_in_filter
1414

1515
# mock the redis for unit test purposes #
1616
try:
17-
if os.environ["UTILITIES_UNIT_TESTING"] >= "2":
17+
if os.environ["UTILITIES_UNIT_TESTING"] == "2":
1818
modules_path = os.path.join(os.path.dirname(__file__), "..")
1919
tests_path = os.path.join(modules_path, "tests")
2020
sys.path.insert(0, modules_path)
2121
sys.path.insert(0, tests_path)
2222
import mock_tables.dbconnector
23-
if os.environ["UTILITIES_UNIT_TESTING"] == "3":
24-
import mock_tables.mock_multi_asic
25-
mock_tables.dbconnector.load_namespace_config()
23+
if os.environ["UTILITIES_UNIT_TESTING_TOPOLOGY"] == "multi_asic":
24+
import mock_tables.mock_multi_asic
25+
mock_tables.dbconnector.load_namespace_config()
2626

2727
except KeyError:
2828
pass

tests/multi_asic_intfutil_test.py

+62-26
Original file line numberDiff line numberDiff line change
@@ -79,66 +79,102 @@
7979
Ethernet-BP0 up up Ethernet-BP0 ASIC1:Eth0-ASIC1
8080
Ethernet-BP4 up up Ethernet-BP4 ASIC1:Eth1-ASIC1
8181
"""
82+
83+
intf_invalid_asic_error="""ValueError: Unknown Namespace asic99"""
84+
8285
class TestInterfacesMultiAsic(object):
8386
@classmethod
8487
def setup_class(cls):
8588
print("SETUP")
8689
os.environ["PATH"] += os.pathsep + scripts_path
87-
os.environ["UTILITIES_UNIT_TESTING"] = "3"
90+
os.environ["UTILITIES_UNIT_TESTING"] = "2"
91+
os.environ["UTILITIES_UNIT_TESTING_TOPOLOGY"] = "multi_asic"
8892

8993
def setUp(self):
9094
self.runner = CliRunner()
9195

96+
def get_result_and_return_code(self, cmd):
97+
return_code = 0
98+
try:
99+
output = subprocess.check_output(
100+
cmd, stderr=subprocess.STDOUT, shell=True)
101+
except subprocess.CalledProcessError as e:
102+
return_code = e.returncode
103+
#store only the error, no need for the traceback
104+
output = e.output.strip().split("\n")[-1]
105+
106+
return(return_code, output)
92107

93108
def test_multi_asic_interface_status_all(self):
94-
result = subprocess.check_output(
95-
'intfutil -c status -d all', stderr=subprocess.STDOUT, shell=True)
96-
print(result)
109+
return_code, result = self.get_result_and_return_code( 'intfutil -c status -d all')
110+
print("return_code: {}".format(return_code))
111+
print("result = {}".format(result))
112+
assert return_code == 0
97113
assert result == intf_status_all
98114

99115
def test_multi_asic_interface_status(self):
100-
result = subprocess.check_output(
101-
'intfutil -c status', stderr=subprocess.STDOUT, shell=True)
102-
print(result)
116+
return_code, result = self.get_result_and_return_code('intfutil -c status')
117+
print("return_code: {}".format(return_code))
118+
print("result = {}".format(result))
119+
assert return_code == 0
103120
assert result == intf_status
104121

105122
def test_multi_asic_interface_status_asic0_all(self):
106-
result = subprocess.check_output(
107-
'intfutil -c status -n asic0 -d all', stderr=subprocess.STDOUT, shell=True)
108-
print(result)
123+
return_code, result = self.get_result_and_return_code('intfutil -c status -n asic0 -d all')
124+
print("return_code: {}".format(return_code))
125+
print("result = {}".format(result))
126+
assert return_code == 0
109127
assert result == intf_status_asic0_all
110128

111129
def test_multi_asic_interface_status_asic0(self):
112-
result = subprocess.check_output(
113-
'intfutil -c status', stderr=subprocess.STDOUT, shell=True)
114-
print(result)
130+
return_code, result = self.get_result_and_return_code('intfutil -c status -n asic0')
131+
print("return_code: {}".format(return_code))
132+
print("result = {}".format(result))
133+
assert return_code == 0
115134
assert result == intf_status_asic0
116135

117136
def test_multi_asic_interface_desc(self):
118-
result = subprocess.check_output(
119-
'intfutil -c description', stderr=subprocess.STDOUT, shell=True)
120-
print(result)
137+
return_code, result = self.get_result_and_return_code('intfutil -c description')
138+
print("return_code: {}".format(return_code))
139+
print("result = {}".format(result))
140+
assert return_code == 0
121141
assert result == intf_description
122142

123143
def test_multi_asic_interface_desc_all(self):
124-
result = subprocess.check_output(
125-
'intfutil -c description -d all', stderr=subprocess.STDOUT, shell=True)
126-
print(result)
144+
return_code, result = self.get_result_and_return_code( 'intfutil -c description -d all')
145+
print("return_code: {}".format(return_code))
146+
print("result = {}".format(result))
147+
assert return_code == 0
127148
assert result == intf_description_all
128149

129150
def test_multi_asic_interface_asic0(self):
130-
result = subprocess.check_output(
131-
'intfutil -c description -n asic0', stderr=subprocess.STDOUT, shell=True)
132-
print(result)
151+
return_code, result = self.get_result_and_return_code( 'intfutil -c description -n asic0')
152+
print("return_code: {}".format(return_code))
153+
print("result = {}".format(result))
154+
assert return_code == 0
133155
assert result == intf_description_asic0
134156

135157
def test_multi_asic_interface_desc_asic0_all(self):
136-
result = subprocess.check_output(
137-
'intfutil -c description -n asic0 -d all', stderr=subprocess.STDOUT, shell=True)
138-
print(result)
158+
return_code, result = self.get_result_and_return_code('intfutil -c description -n asic0 -d all')
159+
print("return_code: {}".format(return_code))
160+
print("result = {}".format(result))
161+
assert return_code == 0
139162
assert result == intf_description_asic0_all
140163

141-
164+
def test_invalid_asic_name(self):
165+
return_code, result = self.get_result_and_return_code('intfutil -c description -n asic99 -d all')
166+
print("return_code: {}".format(return_code))
167+
print("result = {}".format(result))
168+
assert return_code == 1
169+
assert result == intf_invalid_asic_error
170+
171+
def test_invalid_asic_name(self):
172+
return_code, result = self.get_result_and_return_code('intfutil -c status -n asic99')
173+
print("return_code: {}".format(return_code))
174+
print("result = {}".format(result))
175+
assert return_code == 1
176+
assert result == intf_invalid_asic_error
177+
142178
def teardown_class(cls):
143179
print("TEARDOWN")
144180
os.environ["PATH"] = os.pathsep.join(

0 commit comments

Comments
 (0)