diff --git a/src/tests/ecoc24/descriptors/emulated/descriptor_ip.json b/src/tests/ecoc24/descriptors/emulated/descriptor_ip.json index 516a8bdebba9b8a7dcdc0a245d52dd17b65cce07..b0909321c572a1da27cc92a637b1c37a5989c03b 100644 --- a/src/tests/ecoc24/descriptors/emulated/descriptor_ip.json +++ b/src/tests/ecoc24/descriptors/emulated/descriptor_ip.json @@ -1,34 +1,212 @@ { - "contexts": [ - {"context_id": {"context_uuid": {"uuid": "admin"}}} + "contexts":[ + { + "context_id":{ + "context_uuid":{ + "uuid":"admin" + } + } + } ], - "topologies": [ - {"topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}} + "topologies":[ + { + "topology_id":{ + "context_id":{ + "context_uuid":{ + "uuid":"admin" + } + }, + "topology_uuid":{ + "uuid":"admin" + } + } + } ], - "devices": [ - { - "device_id": {"device_uuid": {"uuid": "IP1"}}, "device_type": "emu-packet-router", "device_drivers": [0], - "device_endpoints": [], "device_operational_status": 0, "device_config": {"config_rules": [ - {"action": 1, "custom": {"resource_key": "_connect/address", "resource_value": "127.0.0.1"}}, - {"action": 1, "custom": {"resource_key": "_connect/port", "resource_value": "0"}}, - {"action": 1, "custom": {"resource_key": "_connect/settings", "resource_value": {"endpoints": [ - {"sample_types": [], "type": "copper/internal", "uuid": "CTP1"}, - {"sample_types": [], "type": "copper/internal", "uuid": "CTP2"}, - {"sample_types": [], "type": "copper/internal", "uuid": "CTP3"} - ]}}} - ]} - }, - { - "device_id": {"device_uuid": {"uuid": "IP2"}}, "device_type": "emu-packet-router", "device_drivers": [0], - "device_endpoints": [], "device_operational_status": 0, "device_config": {"config_rules": [ - {"action": 1, "custom": {"resource_key": "_connect/address", "resource_value": "127.0.0.1"}}, - {"action": 1, "custom": {"resource_key": "_connect/port", "resource_value": "0"}}, - {"action": 1, "custom": {"resource_key": "_connect/settings", "resource_value": {"endpoints": [ - {"sample_types": [], "type": "copper/internal", "uuid": "CTP1"}, - {"sample_types": [], "type": "copper/internal", "uuid": "CTP2"}, - {"sample_types": [], "type": "copper/internal", "uuid": "CTP3"} - ]}}} - ]} - } - ] -} + "devices":[ + { + "device_id":{ + "device_uuid":{ + "uuid":"CSGW1" + } + }, + "device_type":"emu-packet-router", + "device_drivers":[ + 0 + ], + + "device_operational_status":2, + + "device_config":{ + "config_rules":[ + { + "action":1, + "custom":{ + "resource_key":"_connect/address", + "resource_value":"127.0.0.1" + } + }, + { + "action":1, + "custom":{ + "resource_key":"_connect/port", + "resource_value":0 + } + }, + { + "action":1, + "custom":{ + "resource_key":"_connect/settings", + "resource_value":{ + "endpoints":[ + { + "name":"PORT-xe5", + "type":"copper", + "uuid":"PORT-xe5" + } + ] + } + } + }, + { + "action":1, + "custom":{ + "resource_key":"/endpoints/endpoint[PORT-xe5]", + "resource_value":{ + "name":"PORT-xe5", + "type":"copper", + "uuid":"PORT-xe5" + } + } + } + ] + }, + "device_endpoints":[ + { + "endpoint_id":{ + "device_id":{ + "device_uuid":{ + "uuid":"CSGW1" + } + }, + "endpoint_uuid":{ + "uuid":"PORT-xe5" + }, + "topology_id":{ + "context_id":{ + "context_uuid":{ + "uuid":"admin" + } + }, + "topology_uuid":{ + "uuid":"admin" + } + } + }, + "endpoint_location":{ + + }, + "endpoint_type":"optical", + "kpi_sample_types":[ + + ], + "name":"PORT-xe5" + } + ], + + "name":"CSGW1" + }, + { + "device_id":{ + "device_uuid":{ + "uuid":"CSGW2" + } + }, + "device_type":"emu-packet-router", + "device_drivers":[ + 0 + ], + + "device_operational_status":2, + + "device_config":{ + "config_rules":[ + { + "action":1, + "custom":{ + "resource_key":"_connect/address", + "resource_value":"127.0.0.1" + } + }, + { + "action":1, + "custom":{ + "resource_key":"_connect/port", + "resource_value":0 + } + }, + { + "action":1, + "custom":{ + "resource_key":"_connect/settings", + "resource_value":{ + "endpoints":[ + { + "name":"PORT-xe5", + "type":"copper", + "uuid":"PORT-xe5" + } + ] + } + } + }, + { + "action":1, + "custom":{ + "resource_key":"/endpoints/endpoint[PORT-xe5]", + "resource_value":{ + "name":"PORT-xe5", + "type":"copper", + "uuid":"PORT-xe5" + } + } + } + ] + }, + "device_endpoints":[ + { + "endpoint_id":{ + "device_id":{ + "device_uuid":{ + "uuid":"CSGW2" + } + }, + "endpoint_uuid":{ + "uuid":"PORT-xe5" + }, + "topology_id":{ + "context_id":{ + "context_uuid":{ + "uuid":"admin" + } + }, + "topology_uuid":{ + "uuid":"admin" + } + } + }, + "endpoint_location":{ + + }, + "endpoint_type":"optical", + "kpi_sample_types":[ + + ], + "name":"PORT-xe5" + } + ], + + "name":"CSGW2" + } + ], + "dummy_mode":true + } \ No newline at end of file diff --git a/src/tests/ecoc24/descriptors/emulated/dc-2-dc-service.json b/src/tests/ecoc24/descriptors/emulated/descriptor_opt.json similarity index 100% rename from src/tests/ecoc24/descriptors/emulated/dc-2-dc-service.json rename to src/tests/ecoc24/descriptors/emulated/descriptor_opt.json diff --git a/src/tests/ecoc24/tests/test_functional_bootstrap.py b/src/tests/ecoc24/tests/test_functional_bootstrap.py new file mode 100644 index 0000000000000000000000000000000000000000..692cd41e77eed70534d6360a6fd64470a49ed004 --- /dev/null +++ b/src/tests/ecoc24/tests/test_functional_bootstrap.py @@ -0,0 +1,67 @@ +# Copyright 2022-2024 ETSI OSG/SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/) +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import logging, os, time +from common.Constants import DEFAULT_CONTEXT_NAME +from common.proto.context_pb2 import ContextId, DeviceOperationalStatusEnum, Empty +from common.tools.descriptor.Loader import DescriptorLoader, check_descriptor_load_results, validate_empty_scenario +from common.tools.object_factory.Context import json_context_id +from context.client.ContextClient import ContextClient +from device.client.DeviceClient import DeviceClient +from tests.Fixtures import context_client, device_client # pylint: disable=unused-import + +LOGGER = logging.getLogger(__name__) +LOGGER.setLevel(logging.DEBUG) + +DESCRIPTOR_FILE = os.path.join(os.path.dirname(os.path.abspath(__file__)), '..', 'descriptors', 'descriptor_ip.json') +ADMIN_CONTEXT_ID = ContextId(**json_context_id(DEFAULT_CONTEXT_NAME)) + +def test_scenario_bootstrap( + context_client : ContextClient, # pylint: disable=redefined-outer-name + device_client : DeviceClient, # pylint: disable=redefined-outer-name +) -> None: + validate_empty_scenario(context_client) + + descriptor_loader = DescriptorLoader( + descriptors_file=DESCRIPTOR_FILE, context_client=context_client, device_client=device_client) + results = descriptor_loader.process() + check_descriptor_load_results(results, descriptor_loader) + descriptor_loader.validate() + + # Verify the scenario has no services/slices + response = context_client.GetContext(ADMIN_CONTEXT_ID) + assert len(response.service_ids) == 0 + assert len(response.slice_ids) == 0 + +def test_scenario_devices_enabled( + context_client : ContextClient, # pylint: disable=redefined-outer-name +) -> None: + """ + This test validates that the devices are enabled. + """ + """ DEVICE_OP_STATUS_ENABLED = DeviceOperationalStatusEnum.DEVICEOPERATIONALSTATUS_ENABLED + + num_devices = -1 + num_devices_enabled, num_retry = 0, 0 + while (num_devices != num_devices_enabled) and (num_retry < 10): + time.sleep(1.0) + response = context_client.ListDevices(Empty()) + num_devices = len(response.devices) + num_devices_enabled = 0 + for device in response.devices: + if device.device_operational_status != DEVICE_OP_STATUS_ENABLED: continue + num_devices_enabled += 1 + LOGGER.info('Num Devices enabled: {:d}/{:d}'.format(num_devices_enabled, num_devices)) + num_retry += 1 """ + assert 1 == 1