+ "node-id": "XPONDER-1",
+ "service-rate": "100",
+ "service-format": "Ethernet",
+ "clli": "Node1"
+ },
+ "service-z-end": {
+ "node-id": "XPONDER-5",
+ "service-rate": "100",
+ "service-format": "Ethernet",
+ "clli": "Node5"
+ }
+ }
+ }
+ response = test_utils.post_request(url, data)
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ self.assertEqual(res['output']['configuration-response-common'][
+ 'response-code'], '200')
+ 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')
+ self.assertEqual(res['output']['gnpy-response'][1]['feasibility'], True)
+ time.sleep(5)
+
+ # Path computed by PCE is not feasible by GNPy and GNPy cannot find
+ # another one (low SNR)
+ def test_05_path_computation_FoundByPCE_NotFeasibleByGnpy(self):
+ url = "{}/operations/transportpce-pce:path-computation-request"
+ data = {
+ "input": {
+ "service-name": "service-2",
+ "resource-reserve": "true",
+ "pce-metric": "hop-count",
+ "service-handler-header": {
+ "request-id": "request-2"
+ },
+ "service-a-end": {
+ "node-id": "XPONDER-1",
+ "service-rate": "100",
+ "service-format": "Ethernet",
+ "clli": "Node1"
+ },
+ "service-z-end": {
+ "node-id": "XPONDER-5",
+ "service-rate": "100",
+ "service-format": "Ethernet",
+ "clli": "Node5"
+ },
+ "hard-constraints": {
+ "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"
+ }
+ }
+ ]
+ }
+ }
+ }
+ }
+ response = test_utils.post_request(url, data)
+ self.assertEqual(response.status_code, requests.codes.ok)
+ res = response.json()
+ self.assertEqual(res['output']['configuration-response-common'][
+ 'response-code'], '500')
+ 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'],
+ 'A-to-Z')
+ self.assertEqual(res['output']['gnpy-response'][0]['feasibility'],
+ False)
+ self.assertEqual(res['output']['gnpy-response'][1]['path-dir'],
+ 'Z-to-A')
+ self.assertEqual(res['output']['gnpy-response'][1]['feasibility'],
+ False)
+ time.sleep(5)
+
+ # #PCE cannot find a path while GNPy finds a feasible one
+ def test_06_path_computation_NotFoundByPCE_FoundByGNPy(self):
+ url = "{}/operations/transportpce-pce:path-computation-request"
+ data = {
+ "input": {
+ "service-name": "service-3",
+ "resource-reserve": "true",
+ "pce-metric": "hop-count",
+ "service-handler-header": {
+ "request-id": "request-3"
+ },
+ "service-a-end": {
+ "node-id": "XPONDER-1",