From 29c1f21acfceba46b41b79c5c8d8edaa50adc7b4 Mon Sep 17 00:00:00 2001 From: vikumarks <119973184+vikumarks@users.noreply.github.com> Date: Sat, 16 Sep 2023 00:44:38 -0700 Subject: [PATCH] Adding new DASH TCs for create, set and remove API 2nd set (#197) Signed-off-by: Vinod Kumar Signed-off-by: selldinesh --- tests/api/test_dash_acl_rule.py | 68 +++++++++ tests/api/test_eni_ether_address_map_entry.py | 71 ++++++++++ tests/api/test_outbound_routing_entry.py | 132 ++++++++++++++++++ 3 files changed, 271 insertions(+) create mode 100644 tests/api/test_dash_acl_rule.py create mode 100644 tests/api/test_eni_ether_address_map_entry.py create mode 100644 tests/api/test_outbound_routing_entry.py diff --git a/tests/api/test_dash_acl_rule.py b/tests/api/test_dash_acl_rule.py new file mode 100644 index 00000000..2cfd3986 --- /dev/null +++ b/tests/api/test_dash_acl_rule.py @@ -0,0 +1,68 @@ +from pprint import pprint + +import pytest + +@pytest.fixture(scope="module", autouse=True) +def skip_all(testbed_instance): + testbed = testbed_instance + if testbed is not None and len(testbed.dpu) != 1: + pytest.skip("invalid for \"{}\" testbed".format(testbed.name)) + +@pytest.mark.dpu +class TestSaiDashAclRule: + # object with parent SAI_OBJECT_TYPE_DASH_ACL_GROUP + + def test_dash_acl_rule_create(self, dpu): + commands = [ + { + 'name': 'dash_acl_group_1', + 'op': 'create', + 'type': 'SAI_OBJECT_TYPE_DASH_ACL_GROUP', + 'attributes': ['SAI_DASH_ACL_GROUP_ATTR_IP_ADDR_FAMILY', 'SAI_IP_ADDR_FAMILY_IPV4',], + }, + { + 'name': 'dash_acl_rule_1', + 'op': 'create', + 'type': 'SAI_OBJECT_TYPE_DASH_ACL_RULE', + 'attributes': [ + 'SAI_DASH_ACL_RULE_ATTR_DASH_ACL_GROUP_ID','$dash_acl_group_1', + 'SAI_DASH_ACL_RULE_ATTR_DIP','1.1.1.1', + 'SAI_DASH_ACL_RULE_ATTR_SIP','2.2.2.2', + 'SAI_DASH_ACL_RULE_ATTR_PROTOCOL','17', + 'SAI_DASH_ACL_RULE_ATTR_SRC_PORT','5678', + 'SAI_DASH_ACL_RULE_ATTR_DST_PORT','8765', + 'SAI_DASH_ACL_RULE_ATTR_PRIORITY','10', + ], + }, + ] + + results = [*dpu.process_commands(commands)] + print('======= SAI commands RETURN values create =======') + pprint(results) + + @pytest.mark.dependency(name='test_sai_dash_acl_rule_attr_action_set') + def test_sai_dash_acl_rule_attr_action_set(self, dpu): + commands = [ + { + 'name': 'dash_acl_rule_1', + 'op': 'set', + 'attributes': [ + 'SAI_DASH_ACL_RULE_ATTR_ACTION', + 'SAI_DASH_ACL_RULE_ACTION_PERMIT', + ], + } + ] + results = [*dpu.process_commands(commands)] + print('======= SAI commands RETURN values set =======') + pprint(results) + + + def test_dash_acl_rule_remove(self, dpu): + commands = [ + {'name': 'dash_acl_rule_1', 'op': 'remove'}, + {'name': 'dash_acl_group_1', 'op': 'remove'}, + ] + + results = [*dpu.process_commands(commands)] + print('======= SAI commands RETURN values remove =======') + pprint(results) diff --git a/tests/api/test_eni_ether_address_map_entry.py b/tests/api/test_eni_ether_address_map_entry.py new file mode 100644 index 00000000..359c7788 --- /dev/null +++ b/tests/api/test_eni_ether_address_map_entry.py @@ -0,0 +1,71 @@ +from pprint import pprint + +import pytest + +@pytest.fixture(scope="module", autouse=True) +def skip_all(testbed_instance): + testbed = testbed_instance + if testbed is not None and len(testbed.dpu) != 1: + pytest.skip("invalid for \"{}\" testbed".format(testbed.name)) + +@pytest.mark.dpu +class TestSaiEniEtherAddressMapEntry: + # object with no attributes + + def test_eni_ether_address_map_entry_create(self, dpu): + commands = [ + {"name": "vnet","op": "create","type": "SAI_OBJECT_TYPE_VNET","attributes": ["SAI_VNET_ATTR_VNI","2000"]}, + { + "name": "eni_1", + "op": "create", + "type": "SAI_OBJECT_TYPE_ENI", + "attributes": [ + "SAI_ENI_ATTR_ADMIN_STATE","True", + "SAI_ENI_ATTR_VM_UNDERLAY_DIP","10.10.1.10", + "SAI_ENI_ATTR_VM_VNI","2000", + "SAI_ENI_ATTR_VNET_ID","$vnet", + ] + }, + { + 'name': 'eni_ether_address_map_entry_1', + 'op': 'create', + 'type': 'SAI_OBJECT_TYPE_ENI_ETHER_ADDRESS_MAP_ENTRY', + 'attributes': ["SAI_ENI_ETHER_ADDRESS_MAP_ENTRY_ATTR_ENI_ID","$eni_1"], + 'key': {'switch_id': '$SWITCH_ID', 'address': '00:AA:AA:AA:AB:00'}, + } + ] + + results = [*dpu.process_commands(commands)] + print('\n======= SAI commands RETURN values create =======\n') + pprint(results) + + @pytest.mark.dependency(name='test_sai_eni_ether_address_map_entry_attr_eni_id_set') + def test_sai_eni_ether_address_map_entry_attr_eni_id_set(self, dpu): + commands = [ + { + 'name': 'eni_ether_address_map_entry_1', + 'op': 'set', + 'attributes': ['SAI_ENI_ETHER_ADDRESS_MAP_ENTRY_ATTR_ENI_ID', 'null'], + } + ] + results = [*dpu.process_commands(commands)] + print('\n======= SAI commands RETURN values set =======\n') + pprint(results) + + + def test_eni_ether_address_map_entry_remove(self, dpu): + commands = [ + + { + 'name': 'eni_ether_address_map_entry_1', + 'key': {'switch_id': '$SWITCH_ID', 'address': '00:AA:AA:AA:AB:00'}, + 'op': 'remove', + }, + {'name': 'eni_1', 'op': 'remove'}, + {"name": "vnet","op": "remove"}, + ] + + results = [*dpu.process_commands(commands)] + print('\n======= SAI commands RETURN values remove =======\n') + pprint(results) + diff --git a/tests/api/test_outbound_routing_entry.py b/tests/api/test_outbound_routing_entry.py new file mode 100644 index 00000000..be7b5af0 --- /dev/null +++ b/tests/api/test_outbound_routing_entry.py @@ -0,0 +1,132 @@ +from pprint import pprint + +import pytest + +@pytest.fixture(scope="module", autouse=True) +def skip_all(testbed_instance): + testbed = testbed_instance + if testbed is not None and len(testbed.dpu) != 1: + pytest.skip("invalid for \"{}\" testbed".format(testbed.name)) + + +@pytest.mark.dpu +class TestSaiOutboundRoutingEntry: + # object with no attributes + + def test_outbound_routing_entry_create(self, dpu): + commands = [ + {"name": "vnet","op": "create","type": "SAI_OBJECT_TYPE_VNET","attributes": ["SAI_VNET_ATTR_VNI","2000"]}, + { + "name": "eni_1", + "op": "create", + "type": "SAI_OBJECT_TYPE_ENI", + "attributes": [ + "SAI_ENI_ATTR_ADMIN_STATE","True", + "SAI_ENI_ATTR_VM_UNDERLAY_DIP","10.10.1.10", + "SAI_ENI_ATTR_VM_VNI","2000", + "SAI_ENI_ATTR_VNET_ID","$vnet", + ] + }, + { + 'name': 'outbound_routing_entry_1', + 'op': 'create', + 'type': 'SAI_OBJECT_TYPE_OUTBOUND_ROUTING_ENTRY', + 'attributes': ["SAI_OUTBOUND_ROUTING_ENTRY_ATTR_ACTION", "SAI_OUTBOUND_ROUTING_ENTRY_ACTION_ROUTE_VNET","SAI_OUTBOUND_ROUTING_ENTRY_ATTR_DST_VNET_ID", "$vnet"], + 'key': { + 'switch_id': '$SWITCH_ID', + 'eni_id': '$eni_1', + 'destination': '10.1.0.0/16', + }, + } + ] + + results = [*dpu.process_commands(commands)] + print('\n======= SAI commands RETURN values create =======\n') + pprint(results) + + @pytest.mark.dependency(name='test_sai_outbound_routing_entry_attr_action_set') + def test_sai_outbound_routing_entry_attr_action_set(self, dpu): + commands = [ + { + 'name': 'outbound_routing_entry_1', + 'op': 'set', + 'attributes': [ + 'SAI_OUTBOUND_ROUTING_ENTRY_ATTR_ACTION', + 'SAI_OUTBOUND_ROUTING_ENTRY_ACTION_ROUTE_VNET', + "SAI_OUTBOUND_ROUTING_ENTRY_ATTR_DST_VNET_ID", "$vnet" + ], + } + ] + results = [*dpu.process_commands(commands)] + print('\n======= SAI commands RETURN values set =======\n') + pprint(results) + + + @pytest.mark.dependency(name='test_sai_outbound_routing_entry_attr_dst_vnet_id_set') + def test_sai_outbound_routing_entry_attr_dst_vnet_id_set(self, dpu): + commands = [ + { + 'name': 'outbound_routing_entry_1', + 'op': 'set', + 'attributes': [ + 'SAI_OUTBOUND_ROUTING_ENTRY_ATTR_ACTION', + 'SAI_OUTBOUND_ROUTING_ENTRY_ACTION_ROUTE_VNET', + "SAI_OUTBOUND_ROUTING_ENTRY_ATTR_DST_VNET_ID", "$vnet" + ], + } + ] + results = [*dpu.process_commands(commands)] + print('\n======= SAI commands RETURN values set =======\n') + pprint(results) + + + + + @pytest.mark.dependency(name='test_sai_outbound_routing_entry_attr_overlay_ip_set') + def test_sai_outbound_routing_entry_attr_overlay_ip_set(self, dpu): + commands = [ + { + 'name': 'outbound_routing_entry_1', + 'op': 'set', + 'attributes': ['SAI_OUTBOUND_ROUTING_ENTRY_ATTR_OVERLAY_IP', '0.0.0.0'], + } + ] + results = [*dpu.process_commands(commands)] + print('\n======= SAI commands RETURN values set =======\n') + pprint(results) + + + @pytest.mark.dependency(name='test_sai_outbound_routing_entry_attr_counter_id_set') + def test_sai_outbound_routing_entry_attr_counter_id_set(self, dpu): + commands = [ + { + 'name': 'outbound_routing_entry_1', + 'op': 'set', + 'attributes': ['SAI_OUTBOUND_ROUTING_ENTRY_ATTR_COUNTER_ID', 'null'], + } + ] + results = [*dpu.process_commands(commands)] + print('\n======= SAI commands RETURN values set =======\n') + pprint(results) + + + + def test_outbound_routing_entry_remove(self, dpu): + commands = [ + { + 'name': 'outbound_routing_entry_1', + 'key': { + 'switch_id': '$SWITCH_ID', + 'eni_id': '$eni_1', + 'destination': '10.1.0.0/16', + }, + 'op': 'remove', + }, + {'name': 'eni_1', 'op': 'remove'}, + {"name": "vnet","op": "remove"}, + + ] + + results = [*dpu.process_commands(commands)] + print('======= SAI commands RETURN values remove =======') + pprint(results)