Skip to content

Commit 79ed8df

Browse files
committed
add UT
1 parent f54c0cf commit 79ed8df

File tree

2 files changed

+62
-10
lines changed

2 files changed

+62
-10
lines changed

generic_config_updater/field_operation_validators.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -86,8 +86,8 @@ def rdma_config_update_validator(path, operation):
8686
if operation not in scenario["operations"]:
8787
return False
8888

89-
if platform in scenario["platforms"]:
90-
if version < scenario["platforms"][platform]:
89+
if asic in scenario["platforms"]:
90+
if branch_version < scenario["platforms"][asic]:
9191
return False
9292
else:
9393
return False

tests/generic_config_updater/field_operation_validator_test.py

+60-8
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,76 @@
1+
import io
12
import unittest
23
import mock
4+
import json
35
import subprocess
46
import generic_config_updater
57
import generic_config_updater.field_operation_validators as fov
68
import generic_config_updater.gu_common as gu_common
79

8-
from unittest.mock import MagicMock, Mock
10+
from unittest.mock import MagicMock, Mock, mock_open
911
from mock import patch
1012
from sonic_py_common.device_info import get_hwsku, get_sonic_version_info
1113

1214

1315
class TestValidateFieldOperation(unittest.TestCase):
1416

17+
@patch("sonic_py_common.device_info.get_sonic_version_info", mock.Mock(return_value={"build_version": "SONiC.20181131"}))
18+
@patch("generic_config_updater.field_operation_validators.get_asic_name", mock.Mock(return_value="unknown"))
19+
def test_rdma_config_update_validator_unknown_asic(self):
20+
path = "/PFC_WD/GLOBAL/POLL_INTERVAL"
21+
operation = "replace"
22+
assert generic_config_updater.field_operation_validators.rdma_config_update_validator(path, operation) == False
23+
24+
@patch("sonic_py_common.device_info.get_sonic_version_info", mock.Mock(return_value={"build_version": "SONiC.20171131"}))
25+
@patch("generic_config_updater.field_operation_validators.get_asic_name", mock.Mock(return_value="spc1"))
26+
@patch("os.path.exists", mock.Mock(return_value=True))
27+
@patch("builtins.open", mock_open(read_data="sample"))
28+
@patch('json.load')
29+
def test_rdma_config_update_validator_spc_asic_invalid_version(self, mock_json_config):
30+
path = "/PFC_WD/Ethernet8/action"
31+
operation = "replace"
32+
mock_json_config.return_value = {"tables": {"pfc_wd": {"validator_data": {"rdma_config_update_validator": {"PFCWD enable/disable": {"fields": ["detection_time", "action"], "operations": ["remove", "replace", "add"], "platforms": {"spc1": "20181100"}}}}}}}
33+
assert generic_config_updater.field_operation_validators.rdma_config_update_validator(path, operation) == False
34+
35+
@patch("sonic_py_common.device_info.get_sonic_version_info", mock.Mock(return_value={"build_version": "SONiC.20181131"}))
36+
@patch("generic_config_updater.field_operation_validators.get_asic_name", mock.Mock(return_value="spc1"))
37+
@patch("os.path.exists", mock.Mock(return_value=True))
38+
@patch("builtins.open", mock_open(read_data="sample"))
39+
@patch('json.load')
40+
def test_rdma_config_update_validator_spc_asic_valid_version(self, mock_json_config):
41+
path = "/PFC_WD/Ethernet8/action"
42+
operation = "replace"
43+
mock_json_config.return_value = {"tables": {"pfc_wd": {"validator_data": {"rdma_config_update_validator": {"PFCWD enable/disable": {"fields": ["detection_time", "action"], "operations": ["remove", "replace", "add"], "platforms": {"spc1": "20181100"}}}}}}}
44+
assert generic_config_updater.field_operation_validators.rdma_config_update_validator(path, operation) == True
45+
46+
@patch("sonic_py_common.device_info.get_sonic_version_info", mock.Mock(return_value={"build_version": "SONiC.20181131"}))
47+
@patch("generic_config_updater.field_operation_validators.get_asic_name", mock.Mock(return_value="spc1"))
48+
@patch("os.path.exists", mock.Mock(return_value=True))
49+
@patch("builtins.open", mock_open(read_data="sample"))
50+
@patch('json.load')
51+
def test_rdma_config_update_validator_spc_asic_invalid_op(self, mock_json_config):
52+
path = "/PFC_WD/Ethernet8/action"
53+
operation = "invalid-op"
54+
mock_json_config.return_value = {"tables": {"pfc_wd": {"validator_data": {"rdma_config_update_validator": {"PFCWD enable/disable": {"fields": ["detection_time", "action"], "operations": ["remove", "replace", "add"], "platforms": {"spc1": "20181100"}}}}}}}
55+
assert generic_config_updater.field_operation_validators.rdma_config_update_validator(path, operation) == False
56+
57+
@patch("sonic_py_common.device_info.get_sonic_version_info", mock.Mock(return_value={"build_version": "SONiC.20181131"}))
58+
@patch("generic_config_updater.field_operation_validators.get_asic_name", mock.Mock(return_value="spc1"))
59+
@patch("os.path.exists", mock.Mock(return_value=True))
60+
@patch("builtins.open", mock_open(read_data="sample"))
61+
@patch('json.load')
62+
def test_rdma_config_update_validator_spc_asic_other_field(self, mock_json_config):
63+
path = "/PFC_WD/Ethernet8/other_field"
64+
operation = "invalid-op"
65+
mock_json_config.return_value = {"tables": {"pfc_wd": {"validator_data": {"rdma_config_update_validator": {"PFCWD enable/disable": {"fields": ["detection_time", "action"], "operations": ["remove", "replace", "add"], "platforms": {"spc1": "20181100"}}}}}}}
66+
assert generic_config_updater.field_operation_validators.rdma_config_update_validator(path, operation) == False
67+
68+
@patch("sonic_py_common.device_info.get_sonic_version_info", mock.Mock(return_value={"build_version": "SONiC.20181131"}))
69+
@patch("generic_config_updater.field_operation_validators.get_asic_name", mock.Mock(return_value="unknown"))
70+
def test_rdma_config_update_validator_unknown_asic(self):
71+
path = "/PFC_WD/GLOBAL/POLL_INTERVAL"
72+
operation = "replace"
73+
1574
@patch("sonic_py_common.device_info.get_sonic_version_info", mock.Mock(return_value={"asic_type": "mellanox", "build_version": "SONiC.20181131"}))
1675
def test_validate_field_operation_legal__pfcwd(self):
1776
old_config = {"PFC_WD": {"GLOBAL": {"POLL_INTERVAL": "60"}}}
@@ -25,13 +84,6 @@ def test_validate_field_operation_illegal__pfcwd(self):
2584
config_wrapper = gu_common.ConfigWrapper()
2685
self.assertRaises(gu_common.IllegalPatchOperationError, config_wrapper.validate_field_operation, old_config, target_config)
2786

28-
@patch("sonic_py_common.device_info.get_sonic_version_info", mock.Mock(return_value={"build_version": "SONiC.20181131"}))
29-
@patch("generic_config_updater.field_operation_validators.get_asic_name", mock.Mock(return_value="unknown"))
30-
def test_validate_field_modification_illegal__pfcwd(self):
31-
path = "/PFC_WD/GLOBAL/POLL_INTERVAL"
32-
operation = "replace"
33-
assert generic_config_updater.field_operation_validators.rdma_config_update_validator(path, operation) == False
34-
3587
def test_validate_field_operation_legal__rm_loopback1(self):
3688
old_config = {
3789
"LOOPBACK_INTERFACE": {

0 commit comments

Comments
 (0)