# http://www.apache.org/licenses/LICENSE-2.0
##############################################################################
+# pylint: disable=no-member
+# pylint: disable=too-many-public-methods
+
import unittest
-import json
import os
import sys
import time
import requests
-from common import test_utils
+sys.path.append('transportpce_tests/common/')
+import test_utils
class TransportGNPYtesting(unittest.TestCase):
- @classmethod
- def __init_logfile(cls):
- GNPY_LOGFILE = os.path.join(os.path.dirname(os.path.realpath(__file__)),
- "..", "..", "transportpce_tests", "gnpy.log")
- if os.path.isfile(GNPY_LOFGILE):
- os.remove(GNPY_LOFGILE)
-
topo_cllinet_data = None
topo_ordnet_data = None
topo_ordtopo_data = None
+ port_mapping_data = None
processes = None
@classmethod
def setUpClass(cls):
+ # pylint: disable=bare-except
try:
sample_files_parsed = False
TOPO_CLLINET_FILE = os.path.join(os.path.dirname(os.path.realpath(__file__)),
"..", "..", "sample_configs", "gnpy", "openroadmTopology.json")
with open(TOPO_ORDTOPO_FILE, 'r') as topo_ordtopo:
cls.topo_ordtopo_data = topo_ordtopo.read()
+ PORT_MAPPING_FILE = os.path.join(os.path.dirname(os.path.realpath(__file__)),
+ "..", "..", "sample_configs", "gnpy", "gnpy_portmapping_121.json")
+ with open(PORT_MAPPING_FILE, 'r') as port_mapping:
+ cls.port_mapping_data = port_mapping.read()
sample_files_parsed = True
except PermissionError as err:
print("Permission Error when trying to read sample files\n", err)
@classmethod
def tearDownClass(cls):
+ # pylint: disable=not-an-iterable
for process in cls.processes:
test_utils.shutdown_process(process)
print("all processes killed")
def setUp(self):
time.sleep(2)
+ # Load port mapping
+ def test_00_load_port_mapping(self):
+ response = test_utils.rawpost_request(test_utils.URL_FULL_PORTMAPPING, self.port_mapping_data)
+ self.assertEqual(response.status_code, requests.codes.no_content)
+ time.sleep(2)
+
# Mount the different topologies
def test_01_connect_clliNetwork(self):
response = test_utils.rawput_request(test_utils.URL_CONFIG_CLLI_NET, self.topo_cllinet_data)
self.assertEqual(res['output']['configuration-response-common'][
'response-message'],
'Path is calculated by PCE')
- self.assertEqual(res['output']['gnpy-response'][0]['path-dir'],
- 'A-to-Z')
- self.assertEqual(res['output']['gnpy-response'][0]['feasibility'], True)
self.assertEqual(res['output']['gnpy-response'][1]['path-dir'],
- 'Z-to-A')
+ 'A-to-Z')
self.assertEqual(res['output']['gnpy-response'][1]['feasibility'], True)
+ self.assertEqual(res['output']['gnpy-response'][0]['path-dir'],
+ 'Z-to-A')
+ self.assertEqual(res['output']['gnpy-response'][0]['feasibility'], True)
time.sleep(5)
# Path computed by PCE is not feasible by GNPy and GNPy cannot find
{"include_": {"ordered-hops": [
{"hop-number": "0", "hop-type": {"node-id": "OpenROADM-2"}},
{"hop-number": "1", "hop-type": {"node-id": "OpenROADM-3"}},
- {"hop-number": "2", "hop-type": {"node-id": "OpenROADM-4"}}]}})
+ {"hop-number": "2", "hop-type": {"node-id": "OpenROADM-4"}}]}
+ })
self.assertEqual(response.status_code, requests.codes.ok)
res = response.json()
self.assertEqual(res['output']['configuration-response-common'][
self.assertEqual(res['output']['configuration-response-common'][
'response-message'],
'No path available by PCE and GNPy ')
- self.assertEqual(res['output']['gnpy-response'][0]['path-dir'],
+ self.assertEqual(res['output']['gnpy-response'][1]['path-dir'],
'A-to-Z')
- self.assertEqual(res['output']['gnpy-response'][0]['feasibility'],
+ self.assertEqual(res['output']['gnpy-response'][1]['feasibility'],
False)
- self.assertEqual(res['output']['gnpy-response'][1]['path-dir'],
+ self.assertEqual(res['output']['gnpy-response'][0]['path-dir'],
'Z-to-A')
- self.assertEqual(res['output']['gnpy-response'][1]['feasibility'],
+ self.assertEqual(res['output']['gnpy-response'][0]['feasibility'],
False)
time.sleep(5)
"service-format": "Ethernet", "clli": "Node5"},
{"include_": {"ordered-hops": [
{"hop-number": "0", "hop-type": {"node-id": "OpenROADM-2"}},
- {"hop-number": "1", "hop-type": {"node-id": "OpenROADM-3"}}]}})
+ {"hop-number": "1", "hop-type": {"node-id": "OpenROADM-3"}}]}
+ })
self.assertEqual(response.status_code, requests.codes.ok)
res = response.json()
self.assertEqual(res['output']['configuration-response-common'][
self.assertEqual(res['output']['configuration-response-common'][
'response-message'],
'Path is calculated by GNPy')
- self.assertEqual(res['output']['gnpy-response'][0]['path-dir'],
- 'A-to-Z')
- self.assertEqual(res['output']['gnpy-response'][0]['feasibility'], True)
self.assertEqual(res['output']['gnpy-response'][1]['path-dir'],
- 'Z-to-A')
+ 'A-to-Z')
self.assertEqual(res['output']['gnpy-response'][1]['feasibility'], True)
+ self.assertEqual(res['output']['gnpy-response'][0]['path-dir'],
+ 'Z-to-A')
+ self.assertEqual(res['output']['gnpy-response'][0]['feasibility'], True)
time.sleep(5)
# Not found path by PCE and GNPy cannot find another one
{"hop-number": "0", "hop-type": {"node-id": "OpenROADM-2"}},
{"hop-number": "1", "hop-type": {"node-id": "OpenROADM-3"}},
{"hop-number": "2", "hop-type": {"node-id": "OpenROADM-4"}},
- {"hop-number": "3", "hop-type": {"node-id": "OpenROADM-3"}}]}})
+ {"hop-number": "3", "hop-type": {"node-id": "OpenROADM-3"}}]}
+ })
self.assertEqual(response.status_code, requests.codes.ok)
res = response.json()
self.assertEqual(res['output']['configuration-response-common'][
self.assertEqual(response.status_code, requests.codes.ok)
time.sleep(3)
+ # Delete portmapping
+ def test_11_delete_port_mapping(self):
+ response = test_utils.delete_request(test_utils.URL_FULL_PORTMAPPING)
+ self.assertEqual(response.status_code, requests.codes.ok)
+ time.sleep(2)
if __name__ == "__main__":
# logging.basicConfig(filename='./transportpce_tests/log/response.log',filemode='w',level=logging.DEBUG)