X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=tests%2Ftransportpce_tests%2Fcommon%2Ftest_utils.py;h=d9ecfc2116349a8f2b79711eb5d7ff2a434c065b;hb=refs%2Fchanges%2F41%2F99341%2F15;hp=46bf27a676ddb1b9a0e1978c9b7b4a3dbb0cd2ce;hpb=cf3a29d3e9f11331a9cab1a4dc59b0e0d96ac9c0;p=transportpce.git diff --git a/tests/transportpce_tests/common/test_utils.py b/tests/transportpce_tests/common/test_utils.py index 46bf27a67..d9ecfc211 100644 --- a/tests/transportpce_tests/common/test_utils.py +++ b/tests/transportpce_tests/common/test_utils.py @@ -10,9 +10,11 @@ ############################################################################## # pylint: disable=no-member +# pylint: disable=too-many-arguments import json import os +# pylint: disable=wrong-import-order import sys import re import signal @@ -22,6 +24,7 @@ import time import psutil import requests +# pylint: disable=import-error import simulators SIMS = simulators.SIMS @@ -131,7 +134,7 @@ def start_karaf(): executable = os.path.join( os.path.dirname(os.path.realpath(__file__)), "..", "..", "..", KARAF_INSTALLDIR, "target", "assembly", "bin", "karaf") - with open('odl.log', 'w') as outfile: + with open('odl.log', 'w', encoding='utf-8') as outfile: return subprocess.Popen( ["sh", executable, "server"], stdout=outfile, stderr=outfile, stdin=None) @@ -142,7 +145,7 @@ def start_lighty(): os.path.dirname(os.path.realpath(__file__)), "..", "..", "..", "lighty", "target", "tpce", "clean-start-controller.sh") - with open(TPCE_LOG, 'w') as outfile: + with open(TPCE_LOG, 'w', encoding='utf-8') as outfile: return subprocess.Popen( ["sh", executable], stdout=outfile, stderr=outfile, stdin=None) @@ -258,6 +261,27 @@ def mount_device(node_id, sim): return response +def mount_tapi_device(node_id, sim): + url = URL_CONFIG_NETCONF_TOPO + "node/" + node_id + body = {"node": [{ + "node-id": node_id, + "netconf-node-topology:username": NODES_LOGIN, + "netconf-node-topology:password": NODES_PWD, + "netconf-node-topology:host": "127.0.0.1", + "netconf-node-topology:port": SIMS[sim]['port'], + "netconf-node-topology:tcp-only": "false", + "netconf-node-topology:pass-through": {}}]} + response = put_request(url, body) + if wait_until_log_contains(TPCE_LOG, re.escape(f"TAPI node for or node {node_id} successfully merged"), 200): + print("Node " + node_id + " correctly added to tpce topology", end='... ', flush=True) + else: + print("Node " + node_id + " still not added to tpce topology", end='... ', flush=True) + if response.status_code == requests.codes.ok: + print("It was probably loaded at start-up", end='... ', flush=True) + # TODO an else-clause to abort test would probably be nice here + return response + + def unmount_device(node_id): url = URL_CONFIG_NETCONF_TOPO + "node/" + node_id response = delete_request(url) @@ -304,6 +328,19 @@ def connect_rdm_to_xpdr_request(xpdr_node: str, xpdr_num: str, network_num: str, return post_request(url, data) +def connect_xpdr_to_rdm_tapi_request(xpdr_node: str, xpdr_num: str, rdm_node: str, srg_num: str): + url = "{}/operations/transportpce-tapinetworkutils:init-xpdr-rdm-tapi-link" + data = { + "input": { + "xpdr-node": xpdr_node, + "network-tp": xpdr_num, + "rdm-node": rdm_node, + "add-drop-tp": srg_num + } + } + return post_request(url, data) + + def check_netconf_node_request(node: str, suffix: str): url = URL_CONFIG_NETCONF_TOPO + ( "node/" + node + "/yang-ext:mount/org-openroadm-device:org-openroadm-device/" + suffix @@ -393,17 +430,18 @@ def service_delete_request(servicename: str, "tail-retention": "no"}}} return post_request(URL_SERV_DELETE, attr) + def service_path_request(operation: str, servicename: str, wavenumber: str, nodes, centerfreq: str, slotwidth: int, minfreq: float, maxfreq: float, lowerslotnumber: int, - higherslotnumber: int): + higherslotnumber: int, modulation_format="dp-qpsk"): attr = {"renderer:input": { "renderer:service-name": servicename, "renderer:wave-number": wavenumber, - "renderer:modulation-format": "dp-qpsk", + "renderer:modulation-format": modulation_format, "renderer:operation": operation, "renderer:nodes": nodes, "renderer:center-freq": centerfreq, - "renderer:width": slotwidth, + "renderer:nmc-width": slotwidth, "renderer:min-freq": minfreq, "renderer:max-freq": maxfreq, "renderer:lower-spectral-slot-number": lowerslotnumber, @@ -446,20 +484,24 @@ def path_computation_request(requestid: str, servicename: str, serviceaend, serv attr.update(other_attr) return post_request(URL_PATH_COMPUTATION_REQUEST, {"input": attr}) + def tapi_create_connectivity_request(topologyidorname): return post_request(URL_TAPI_CREATE_CONNECTIVITY, topologyidorname) + def tapi_delete_connectivity_request(serviceidorname): attr = { "input": { "service-id-or-name": serviceidorname}} - return post_request(URL_TAPI_DELETE_CONNECTIVITY , attr) + return post_request(URL_TAPI_DELETE_CONNECTIVITY, attr) + def tapi_get_topology_details_request(topologyidorname): attr = { "input": { "topology-id-or-name": topologyidorname}} - return post_request(URL_TAPI_TOPOLOGY_DETAILS , attr) + return post_request(URL_TAPI_TOPOLOGY_DETAILS, attr) + def tapi_get_node_details_request(topologyidorname, nodeidorname): attr = { @@ -468,12 +510,15 @@ def tapi_get_node_details_request(topologyidorname, nodeidorname): "node-id-or-name": nodeidorname}} return post_request(URL_TAPI_NODE_DETAILS, attr) + def tapi_get_sip_details_request(): return post_request(URL_TAPI_SIP_LIST, "") + def tapi_get_service_list_request(): return post_request(URL_TAPI_SERVICE_LIST, "") + def shutdown_process(process): if process is not None: for child in psutil.Process(process.pid).children(): @@ -488,7 +533,7 @@ def start_honeynode(log_file: str, sim): sample_directory = os.path.join(os.path.dirname(os.path.realpath(__file__)), "..", "..", "sample_configs", "openroadm", sim[1]) if os.path.isfile(executable): - with open(log_file, 'w') as outfile: + with open(log_file, 'w', encoding='utf-8') as outfile: return subprocess.Popen( [executable, SIMS[sim]['port'], os.path.join(sample_directory, SIMS[sim]['configfile'])], stdout=outfile, stderr=outfile) @@ -497,6 +542,7 @@ def start_honeynode(log_file: str, sim): def wait_until_log_contains(log_file, regexp, time_to_wait=60): # pylint: disable=lost-exception + # pylint: disable=consider-using-with stringfound = False filefound = False line = None @@ -504,7 +550,7 @@ def wait_until_log_contains(log_file, regexp, time_to_wait=60): with TimeOut(seconds=time_to_wait): while not os.path.exists(log_file): time.sleep(0.2) - filelogs = open(log_file, 'r') + filelogs = open(log_file, 'r', encoding='utf-8') filelogs.seek(0, 2) filefound = True print("Searching for pattern '" + regexp + "' in " + os.path.basename(log_file), end='... ', flush=True)