|
| 1 | +import importlib |
1 | 2 | import sys
|
2 | 3 | import os
|
3 | 4 | import pytest
|
@@ -269,3 +270,43 @@ def test_incremental_update(self, acl_loader):
|
269 | 270 | acl_loader.load_rules_from_file(os.path.join(test_path, 'acl_input/incremental_2.json'))
|
270 | 271 | acl_loader.incremental_update()
|
271 | 272 | assert acl_loader.rules_info[(('NTP_ACL', 'RULE_1'))]["PACKET_ACTION"] == "DROP"
|
| 273 | + |
| 274 | + |
| 275 | + |
| 276 | +class TestMasicAclLoader(object): |
| 277 | + |
| 278 | + |
| 279 | + @pytest.fixture(scope="class") |
| 280 | + def acl_loader(self): |
| 281 | + from .mock_tables import mock_multi_asic |
| 282 | + importlib.reload(mock_multi_asic) |
| 283 | + from .mock_tables import dbconnector |
| 284 | + dbconnector.load_namespace_config() |
| 285 | + |
| 286 | + with mock.patch("sonic_py_common.multi_asic.get_all_namespaces", |
| 287 | + mock.MagicMock(return_value={'front_ns': ['asic0', 'asic1'], 'back_ns': '', 'fabric_ns': ''})): |
| 288 | + yield AclLoader() |
| 289 | + |
| 290 | + # mock single asic to avoid affecting other tests |
| 291 | + from .mock_tables import mock_single_asic |
| 292 | + importlib.reload(mock_single_asic) |
| 293 | + |
| 294 | + def test_check_npu_db(self, acl_loader): |
| 295 | + assert len(acl_loader.per_npu_configdb) == 2 |
| 296 | + assert len(acl_loader.per_npu_statedb) == 2 |
| 297 | + |
| 298 | + def test_incremental_update(self, acl_loader): |
| 299 | + acl_loader.rules_info = {} |
| 300 | + acl_loader.tables_db_info['NTP_ACL'] = { |
| 301 | + "stage": "INGRESS", |
| 302 | + "type": "CTRLPLANE" |
| 303 | + } |
| 304 | + acl_loader.load_rules_from_file(os.path.join(test_path, 'acl_input/incremental_1.json')) |
| 305 | + acl_loader.rules_db_info = acl_loader.rules_info |
| 306 | + assert acl_loader.rules_info[(('NTP_ACL', 'RULE_1'))]["PACKET_ACTION"] == "ACCEPT" |
| 307 | + for configdb in acl_loader.per_npu_configdb.values(): |
| 308 | + configdb.mod_entry = mock.MagicMock(return_value=True) |
| 309 | + configdb.set_entry = mock.MagicMock(return_value=True) |
| 310 | + acl_loader.load_rules_from_file(os.path.join(test_path, 'acl_input/incremental_2.json')) |
| 311 | + acl_loader.incremental_update() |
| 312 | + assert acl_loader.rules_info[(('NTP_ACL', 'RULE_1'))]["PACKET_ACTION"] == "DROP" |
0 commit comments