diff --git a/src/device/service/drivers/p4/p4_driver.py b/src/device/service/drivers/p4/p4_driver.py index 3e0cccffabb7aad4ab5b5c6e88642c36b7e12166..af05952b313d1632eacd5962cc34c4aa1b6b5a10 100644 --- a/src/device/service/drivers/p4/p4_driver.py +++ b/src/device/service/drivers/p4/p4_driver.py @@ -44,7 +44,7 @@ class P4Driver(_Driver): transport port number of the P4Runtime server running on the P4 device **settings : map id : int - P4 device ID (Mandatory) + P4 device datapath ID (Mandatory) name : str P4 device name (Optional) vendor : str diff --git a/src/device/tests/device_p4.py b/src/device/tests/device_p4.py index 577855dd449b1aa67b8b36e78bd57abb47b03b23..4cd0a4c745d3a07b71f320ce79d73c95ffb0af37 100644 --- a/src/device/tests/device_p4.py +++ b/src/device/tests/device_p4.py @@ -17,9 +17,10 @@ P4 device example configuration. """ from common.tools.object_factory.ConfigRule import json_config_rule_set -from common.tools.object_factory.Device import json_device_p4_disabled +from common.tools.object_factory.Device import ( + json_device_connect_rules, json_device_id, json_device_p4_disabled) -DEVICE_P4_ID = 0 +DEVICE_P4_DPID = 0 DEVICE_P4_NAME = 'device:leaf1' DEVICE_P4_ADDRESS = '127.0.0.1' DEVICE_P4_PORT = '50101' @@ -29,21 +30,22 @@ DEVICE_P4_SW_VER = 'Stratum' DEVICE_P4_PIPECONF = 'org.onosproject.pipelines.fabric' DEVICE_P4_WORKERS = 2 DEVICE_P4_GRACE_PERIOD = 60 +DEVICE_P4_TIMEOUT = 60 -DEVICE_P4_UUID = {'device_uuid': {'uuid': DEVICE_P4_NAME}} +DEVICE_P4_UUID = DEVICE_P4_NAME +DEVICE_P4_ID = json_device_id(DEVICE_P4_UUID) DEVICE_P4 = json_device_p4_disabled(DEVICE_P4_UUID) -DEVICE_P4_CONNECT_RULES = [ - json_config_rule_set('_connect/address', DEVICE_P4_ADDRESS), - json_config_rule_set('_connect/port', DEVICE_P4_PORT), - json_config_rule_set('_connect/settings', { - 'id' : int(DEVICE_P4_ID), - 'name' : DEVICE_P4_NAME, - 'hw-ver' : DEVICE_P4_HW_VER, - 'sw-ver' : DEVICE_P4_SW_VER, - 'pipeconf': DEVICE_P4_PIPECONF - }), -] +DEVICE_P4_CONNECT_RULES = json_device_connect_rules( + DEVICE_P4_ADDRESS, DEVICE_P4_PORT, { + 'id': DEVICE_P4_DPID, + 'name': DEVICE_P4_NAME, + 'hw-ver': DEVICE_P4_HW_VER, + 'sw-ver': DEVICE_P4_SW_VER, + 'pipeconf': DEVICE_P4_PIPECONF, + 'timeout': DEVICE_P4_TIMEOUT + } +) DEVICE_P4_CONFIG_RULES = [ json_config_rule_set('key1', 'value1'), diff --git a/src/device/tests/test_unit_p4.py b/src/device/tests/test_unit_p4.py index 853d9d8a5fa4795fbec1445bd0f9d518402023c7..777ab280aa2b500c3c2b445fcecdf81024b817f3 100644 --- a/src/device/tests/test_unit_p4.py +++ b/src/device/tests/test_unit_p4.py @@ -15,7 +15,7 @@ import pytest from device.service.drivers.p4.p4_driver import P4Driver from .device_p4 import( - DEVICE_P4_ADDRESS, DEVICE_P4_PORT, DEVICE_P4_ID, DEVICE_P4_NAME, + DEVICE_P4_ADDRESS, DEVICE_P4_PORT, DEVICE_P4_DPID, DEVICE_P4_NAME, DEVICE_P4_VENDOR, DEVICE_P4_HW_VER, DEVICE_P4_SW_VER, DEVICE_P4_PIPECONF, DEVICE_P4_WORKERS, DEVICE_P4_GRACE_PERIOD) from .mock_p4runtime_service import MockP4RuntimeService @@ -37,7 +37,7 @@ def device_driverapi_p4(): _driver = P4Driver( address=DEVICE_P4_ADDRESS, port=DEVICE_P4_PORT, - id=DEVICE_P4_ID, + id=DEVICE_P4_DPID, name=DEVICE_P4_NAME, vendor=DEVICE_P4_VENDOR, hw_ver=DEVICE_P4_HW_VER, diff --git a/src/device/tests/test_unitary.py b/src/device/tests/test_unitary.py index 64c54deb0e784fbf075d7d6973ed01b0708d4867..411cbba05957425687b0b03e3e868febe82a944d 100644 --- a/src/device/tests/test_unitary.py +++ b/src/device/tests/test_unitary.py @@ -81,7 +81,7 @@ except ImportError: #ENABLE_EMULATED = False # set to False to disable tests of Emulated devices #ENABLE_OPENCONFIG = False # set to False to disable tests of OpenConfig devices #ENABLE_TAPI = False # set to False to disable tests of TAPI devices -ENABLE_P4 = False # set to False to disable tests of P4 devices (P4 device not available in GitLab) +#ENABLE_P4 = False # set to False to disable tests of P4 devices ENABLE_OPENCONFIG_CONFIGURE = True ENABLE_OPENCONFIG_MONITOR = True @@ -917,7 +917,8 @@ def test_device_p4_add_error_cases( device_client: DeviceClient, # pylint: disable=redefined-outer-name device_service: DeviceService): # pylint: disable=redefined-outer-name - if not ENABLE_P4: pytest.skip('Skipping test: No P4 device has been configured') + if not ENABLE_P4: pytest.skip( + 'Skipping test: No P4 device has been configured') with pytest.raises(grpc.RpcError) as e: device_p4_with_extra_rules = copy.deepcopy(DEVICE_P4) @@ -940,13 +941,14 @@ def test_device_p4_add_correct( device_service: DeviceService, # pylint: disable=redefined-outer-name p4runtime_service: MockP4RuntimeService): # pylint: disable=redefined-outer-name - if not ENABLE_P4: pytest.skip('Skipping test: No P4 device has been configured') + if not ENABLE_P4: pytest.skip( + 'Skipping test: No P4 device has been configured') device_p4_with_connect_rules = copy.deepcopy(DEVICE_P4) device_p4_with_connect_rules['device_config']['config_rules'].extend( DEVICE_P4_CONNECT_RULES) device_client.AddDevice(Device(**device_p4_with_connect_rules)) - driver : _Driver = device_service.driver_instance_cache.get(DEVICE_P4_NAME) + driver : _Driver = device_service.driver_instance_cache.get(DEVICE_P4_UUID) assert driver is not None @@ -956,13 +958,14 @@ def test_device_p4_get( device_service: DeviceService, # pylint: disable=redefined-outer-name p4runtime_service: MockP4RuntimeService): # pylint: disable=redefined-outer-name - if not ENABLE_P4: pytest.skip('Skipping test: No P4 device has been configured') + if not ENABLE_P4: pytest.skip( + 'Skipping test: No P4 device has been configured') - initial_config = device_client.GetInitialConfig(DeviceId(**DEVICE_P4_UUID)) + initial_config = device_client.GetInitialConfig(DeviceId(**DEVICE_P4_ID)) LOGGER.info('initial_config = {:s}'.format( grpc_message_to_json_string(initial_config))) - device_data = context_client.GetDevice(DeviceId(**DEVICE_P4_UUID)) + device_data = context_client.GetDevice(DeviceId(**DEVICE_P4_ID)) LOGGER.info('device_data = {:s}'.format( grpc_message_to_json_string(device_data))) @@ -972,6 +975,10 @@ def test_device_p4_configure( device_client: DeviceClient, # pylint: disable=redefined-outer-name device_service: DeviceService, # pylint: disable=redefined-outer-name p4runtime_service: MockP4RuntimeService): # pylint: disable=redefined-outer-name + + if not ENABLE_P4: pytest.skip( + 'Skipping test: No P4 device has been configured') + pytest.skip('Skipping test for unimplemented method') @@ -980,6 +987,10 @@ def test_device_p4_deconfigure( device_client: DeviceClient, # pylint: disable=redefined-outer-name device_service: DeviceService, # pylint: disable=redefined-outer-name p4runtime_service: MockP4RuntimeService): # pylint: disable=redefined-outer-name + + if not ENABLE_P4: pytest.skip( + 'Skipping test: No P4 device has been configured') + pytest.skip('Skipping test for unimplemented method') @@ -991,6 +1002,6 @@ def test_device_p4_delete( if not ENABLE_P4: pytest.skip('Skipping test: No P4 device has been configured') - device_client.DeleteDevice(DeviceId(**DEVICE_P4_UUID)) - driver : _Driver = device_service.driver_instance_cache.get(DEVICE_P4_NAME) + device_client.DeleteDevice(DeviceId(**DEVICE_P4_ID)) + driver : _Driver = device_service.driver_instance_cache.get(DEVICE_P4_UUID) assert driver is None