Bug 4843 - SFC Basic Rest Regression broken after Yang models change 75/31875/2
authorReinaldo Penno <[email protected]>
Fri, 25 Dec 2015 00:04:58 +0000 (16:04 -0800)
committerReinaldo Penno <[email protected]>
Fri, 25 Dec 2015 03:32:02 +0000 (19:32 -0800)
- This first patch fixes all JSON messages for the basic rest regression
- More fixes to come
- Fixed typo

Change-Id: I122a343bb9b9daff81fe157fbcf0aa2132b965c5
Signed-off-by: Reinaldo Penno <[email protected]>
sfc-test/common.py
sfc-test/sfc_basic_rest_regression.py
sfc-test/sfc_basic_rest_regression_messages.py

index b6aad4320971a6a263d53910050fa38d0298bbb0..10fbff40afd6782115c4c7474bab664de926e8f5 100644 (file)
@@ -6,9 +6,9 @@ __status__ = "alpha"
 
 import requests
 import json
-import time
 from subprocess import *
 import pexpect
+import time
 
 put_json_headers = {'content-type': 'application/json'}
 get_json_headers = {'Accept': 'application/json'}
@@ -100,7 +100,7 @@ def put_and_check(url, json_req, json_resp):
         # Creation of SFPs is slow, need to pause here.
         time.sleep(2)
         r = s.get(url, stream=False, auth=(USERNAME, PASSWORD))
-        if (r.status_code == 200) and (json.loads(r.text) == json.loads(json_resp)):
+        if (r.status_code == 200) and (ordered(json.loads(r.text)) == ordered(json.loads(json_resp))):
             print("=>Creation successfully \n")
         else:
             print("=>Creation did not pass check, error code: {}. If error code was 2XX it is "
@@ -113,7 +113,7 @@ def check(url, json_resp, message):
     s = requests.Session()
     print(message, "\n")
     r = s.get(url, stream=False, auth=(USERNAME, PASSWORD))
-    if (r.status_code == 200) and (json.loads(r.text) == json.loads(json_resp)):
+    if (r.status_code == 200) and (ordered(json.loads(r.text)) == ordered(json.loads(json_resp))):
         print("=>Check successful \n")
     else:
         print("=>Check not successful, error code: {}. If error code was 2XX it is "
@@ -210,3 +210,15 @@ def check_sfc_initialized(child):
     except KeyError:
         print("SFC not initialized properly, empty answer from Karaf")
     return ret
+
+
+# http://stackoverflow.com/questions/25851183/how-to-compare-two-json-objects-with-the-same-elements-in-a-different-order-equa
+
+
+def ordered(obj):
+    if isinstance(obj, dict):
+        return sorted((k, ordered(v)) for k, v in obj.items())
+    if isinstance(obj, list):
+        return sorted(ordered(x) for x in obj)
+    else:
+        return obj
\ No newline at end of file
index e20877fa723e33407eacfdd676745af2287a02bc..c6b4e9fa0de55e93448d8a61e41bf667c346fe8b 100644 (file)
@@ -1,7 +1,7 @@
 __author__ = "Reinaldo Penno"
 __copyright__ = "Copyright(c) 2014, Cisco Systems, Inc."
 __license__ = "New-style BSD"
-__version__ = "0.3"
+__version__ = "0.4"
 __email__ = "[email protected]"
 __status__ = "Tested with SFC-Karaf distribution as of 10/05/2014"
 
@@ -72,8 +72,3 @@ def main():
 if __name__ == "__main__":
     main()
 
-    # delete_and_check(SF_ONE_URL.format("SF1"), "Deleting SF {}".format("SF1"))
-    # check(RSP_URL, RENDERED_SERVICE_PATH_DEL_ONE_JSON, "Checking RSP after deleting one SF...")
-    # check(SFT_URL, SERVICE_FUNCTION_TYPE_DELETE_ONE_SF_JSON, "Checking Service Function Types after deleting on SF...")
-    # delete_configuration()
-
index 5fa2f36398db868f500d22f78dec1474d4e0771c..e1b4635ce88adec1006f163d9a6a6ca7b4cffd94 100644 (file)
@@ -23,7 +23,7 @@ SERVICE_FUNCTIONS_JSON = """
         "nsh-aware": true,
         "rest-uri": "http://10.0.1.43:5000",
         "ip-mgmt-address": "10.0.1.43",
-        "type": "service-function-type:napt44"
+        "type": "napt44"
       },
       {
         "name": "SF1",
@@ -39,7 +39,7 @@ SERVICE_FUNCTIONS_JSON = """
         "rest-uri": "http://10.0.1.41:5000",
         "nsh-aware": true,
         "ip-mgmt-address": "10.0.1.41",
-        "type": "service-function-type:dpi"
+        "type": "dpi"
       },
       {
         "name": "SF2",
@@ -55,7 +55,7 @@ SERVICE_FUNCTIONS_JSON = """
         "rest-uri": "http://10.0.1.42:5000",
         "nsh-aware": true,
         "ip-mgmt-address": "10.0.1.42",
-        "type": "service-function-type:ids"
+        "type": "ids"
       },
       {
         "name": "SF3",
@@ -71,7 +71,7 @@ SERVICE_FUNCTIONS_JSON = """
         "nsh-aware": true,
         "rest-uri": "http://10.0.1.43:5000",
         "ip-mgmt-address": "10.0.1.43",
-        "type": "service-function-type:qos"
+        "type": "qos"
       },
       {
         "name": "SF4",
@@ -87,7 +87,7 @@ SERVICE_FUNCTIONS_JSON = """
         "nsh-aware": true,
         "rest-uri": "http://10.0.1.42:5000",
         "ip-mgmt-address": "10.0.1.42",
-        "type": "service-function-type:firewall"
+        "type": "firewall"
       }
     ]
   }
@@ -113,14 +113,9 @@ SERVICE_FUNCTION_FORWARDERS_JSON = """
         "service-function-dictionary": [
           {
             "name": "SF4",
-            "type": "service-function-type:firewall",
             "sff-sf-data-plane-locator": {
-              "service-function-forwarder-ovs:ovs-bridge": {
-                "bridge-name": "br-int"
-              },
-              "port": 40001,
-              "ip": "10.0.1.44",
-              "transport": "service-locator:vxlan-gpe"
+              "sff-dpl-name": "eth0",
+              "sf-dpl-name": "vxlan"
             }
           }
         ],
@@ -143,14 +138,9 @@ SERVICE_FUNCTION_FORWARDERS_JSON = """
         "service-function-dictionary": [
           {
             "name": "SF1",
-            "type": "service-function-type:dpi",
             "sff-sf-data-plane-locator": {
-              "service-function-forwarder-ovs:ovs-bridge": {
-                "bridge-name": "br-int"
-              },
-              "port": 40001,
-              "ip": "10.0.1.41",
-              "transport": "service-locator:vxlan-gpe"
+              "sff-dpl-name": "eth0",
+              "sf-dpl-name": "vxlan"
             }
           }
         ],
@@ -170,6 +160,15 @@ SERVICE_FUNCTION_FORWARDERS_JSON = """
           }
         ],
         "rest-uri": "http://10.0.1.45:5000",
+        "service-function-dictionary": [
+          {
+            "name": "SF5",
+            "sff-sf-data-plane-locator": {
+              "sff-dpl-name": "eth0",
+              "sf-dpl-name": "vxlan"
+            }
+          }
+        ],
         "ip-mgmt-address": "10.0.1.45",
         "service-node": "Ubuntu5"
       },
@@ -189,14 +188,9 @@ SERVICE_FUNCTION_FORWARDERS_JSON = """
         "service-function-dictionary": [
           {
             "name": "SF2",
-            "type": "service-function-type:ids",
             "sff-sf-data-plane-locator": {
-              "service-function-forwarder-ovs:ovs-bridge": {
-                "bridge-name": "br-int"
-              },
-              "port": 40001,
-              "ip": "10.0.1.42",
-              "transport": "service-locator:vxlan-gpe"
+              "sff-dpl-name": "eth0",
+              "sf-dpl-name": "vxlan"
             }
           }
         ],
@@ -219,14 +213,9 @@ SERVICE_FUNCTION_FORWARDERS_JSON = """
         "service-function-dictionary": [
           {
             "name": "SF3",
-            "type": "service-function-type:qos",
             "sff-sf-data-plane-locator": {
-              "service-function-forwarder-ovs:ovs-bridge": {
-                "bridge-name": "br-int"
-              },
-              "port": 40001,
-              "ip": "10.0.1.43",
-              "transport": "service-locator:vxlan-gpe"
+              "sff-dpl-name": "eth0",
+              "sf-dpl-name": "vxlan"
             }
           }
         ],
@@ -246,12 +235,12 @@ SERVICE_CHAINS_JSON = """
         "sfc-service-function": [
           {
             "name": "firewall-abstract2",
-            "type": "service-function-type:firewall",
+            "type": "firewall",
             "order": 0
           },
           {
             "name": "napt44-abstract2",
-            "type": "service-function-type:napt44",
+            "type": "napt44",
             "order": 1
           }
         ]
@@ -262,15 +251,15 @@ SERVICE_CHAINS_JSON = """
         "sfc-service-function": [
           {
             "name": "dpi-abstract1",
-            "type": "service-function-type:dpi"
+            "type": "dpi"
           },
           {
             "name": "ids-abstract1",
-            "type": "service-function-type:ids"
+            "type": "ids"
           },
           {
             "name": "qos-abstract1",
-            "type": "service-function-type:qos"
+            "type": "qos"
           }
         ]
       }
@@ -305,7 +294,7 @@ RENDERED_SERVICE_PATH_RPC_PATH_1_REQ = """
 RENDERED_SERVICE_PATH_RPC_PATH_1_RESP = """
 {
   "output": {
-    "result": true
+    "name": "Path-1-SFC1-Path-71"
   }
 }"""
 
@@ -319,7 +308,7 @@ RENDERED_SERVICE_PATH_RPC_PATH_2_REQ = """
 RENDERED_SERVICE_PATH_RPC_PATH_2_RESP = """
 {
   "output": {
-    "result": true
+    "name": "Path-2-SFC2-Path-130"
   }
 }"""
 
@@ -345,64 +334,68 @@ RENDERED_SERVICE_PATH_RESP_JSON = """
   "rendered-service-paths": {
     "rendered-service-path": [
       {
-        "name": "Path-1-SFC1-Path-1",
-        "path-id": 1,
+        "name": "Path-1-SFC1-Path-133-Reverse",
+        "transport-type": "service-locator:vxlan-gpe",
         "parent-service-function-path": "Path-1-SFC1",
-        "starting-index": 255,
+        "path-id": 8388741,
         "service-chain-name": "SFC1",
+        "starting-index": 255,
         "rendered-service-path-hop": [
           {
             "hop-number": 0,
-            "service-index": 255,
-            "service-function-forwarder": "SFF1",
             "service-function-forwarder-locator": "eth0",
-            "service-function-name": "SF1"
+            "service-function-name": "SF3",
+            "service-function-forwarder": "SFF3",
+            "service-index": 255
           },
           {
             "hop-number": 1,
-            "service-index": 254,
-            "service-function-forwarder": "SFF2",
             "service-function-forwarder-locator": "eth0",
-            "service-function-name": "SF2"
+            "service-function-name": "SF2",
+            "service-function-forwarder": "SFF2",
+            "service-index": 254
           },
           {
             "hop-number": 2,
-            "service-index": 253,
-            "service-function-forwarder": "SFF3",
             "service-function-forwarder-locator": "eth0",
-            "service-function-name": "SF3"
+            "service-function-name": "SF1",
+            "service-function-forwarder": "SFF1",
+            "service-index": 253
           }
-        ]
+        ],
+        "symmetric-path-id": 133
       },
       {
-        "name": "Path-1-SFC1-Path-1-Reverse",
-        "path-id": 2,
+        "name": "Path-1-SFC1-Path-133",
+        "transport-type": "service-locator:vxlan-gpe",
         "parent-service-function-path": "Path-1-SFC1",
-        "starting-index": 255,
+        "path-id": 133,
         "service-chain-name": "SFC1",
+        "starting-index": 255,
         "rendered-service-path-hop": [
           {
             "hop-number": 0,
-            "service-index": 255,
-            "service-function-forwarder": "SFF3",
             "service-function-forwarder-locator": "eth0",
-            "service-function-name": "SF3"
+            "service-function-name": "SF1",
+            "service-function-forwarder": "SFF1",
+            "service-index": 255
           },
           {
             "hop-number": 1,
-            "service-index": 254,
-            "service-function-forwarder": "SFF2",
             "service-function-forwarder-locator": "eth0",
-            "service-function-name": "SF2"
+            "service-function-name": "SF2",
+            "service-function-forwarder": "SFF2",
+            "service-index": 254
           },
           {
             "hop-number": 2,
-            "service-index": 253,
-            "service-function-forwarder": "SFF1",
             "service-function-forwarder-locator": "eth0",
-            "service-function-name": "SF1"
+            "service-function-name": "SF3",
+            "service-function-forwarder": "SFF3",
+            "service-index": 253
           }
-        ]
+        ],
+        "symmetric-path-id": 8388741
       }
     ]
   }
@@ -413,35 +406,35 @@ SERVICE_FUNCTION_FORWARDERS_OPER_JSON = """
   "service-function-forwarders-state": {
     "service-function-forwarder-state": [
       {
-        "name": "SFF2",
+        "name": "SFF1",
         "sff-service-path": [
           {
-            "name": "Path-1-SFC1-Path-1"
+            "name": "Path-1-SFC1-Path-133-Reverse"
           },
           {
-            "name": "Path-1-SFC1-Path-1-Reverse"
+            "name": "Path-1-SFC1-Path-133"
           }
         ]
       },
       {
-        "name": "SFF3",
+        "name": "SFF2",
         "sff-service-path": [
           {
-            "name": "Path-1-SFC1-Path-1"
+            "name": "Path-1-SFC1-Path-133-Reverse"
           },
           {
-            "name": "Path-1-SFC1-Path-1-Reverse"
+            "name": "Path-1-SFC1-Path-133"
           }
         ]
       },
       {
-        "name": "SFF1",
+        "name": "SFF3",
         "sff-service-path": [
           {
-            "name": "Path-1-SFC1-Path-1"
+            "name": "Path-1-SFC1-Path-133-Reverse"
           },
           {
-            "name": "Path-1-SFC1-Path-1-Reverse"
+            "name": "Path-1-SFC1-Path-133"
           }
         ]
       }
@@ -454,35 +447,35 @@ SERVICE_FUNCTION_OPER_JSON = """
   "service-functions-state": {
     "service-function-state": [
       {
-        "name": "SF2",
+        "name": "SF3",
         "sf-service-path": [
           {
-            "name": "Path-1-SFC1-Path-1-Reverse"
+            "name": "Path-1-SFC1-Path-133-Reverse"
           },
           {
-            "name": "Path-1-SFC1-Path-1"
+            "name": "Path-1-SFC1-Path-133"
           }
         ]
       },
       {
-        "name": "SF1",
+        "name": "SF2",
         "sf-service-path": [
           {
-            "name": "Path-1-SFC1-Path-1-Reverse"
+            "name": "Path-1-SFC1-Path-133-Reverse"
           },
           {
-            "name": "Path-1-SFC1-Path-1"
+            "name": "Path-1-SFC1-Path-133"
           }
         ]
       },
       {
-        "name": "SF3",
+        "name": "SF1",
         "sf-service-path": [
           {
-            "name": "Path-1-SFC1-Path-1-Reverse"
+            "name": "Path-1-SFC1-Path-133-Reverse"
           },
           {
-            "name": "Path-1-SFC1-Path-1"
+            "name": "Path-1-SFC1-Path-133"
           }
         ]
       }
@@ -495,31 +488,31 @@ SERVICE_FUNCTION_TYPE_JSON = """
   "service-function-types": {
     "service-function-type": [
       {
-        "type": "service-function-type:dpi",
+        "type": "firewall",
         "sft-service-function-name": [
           {
-            "name": "SF1"
+            "name": "SF4"
           }
         ]
       },
       {
-        "type": "service-function-type:napt44",
+        "type": "dpi",
         "sft-service-function-name": [
           {
-            "name": "SF5"
+            "name": "SF1"
           }
         ]
       },
       {
-        "type": "service-function-type:firewall",
+        "type": "ids",
         "sft-service-function-name": [
           {
-            "name": "SF4"
+            "name": "SF2"
           }
         ]
       },
       {
-        "type": "service-function-type:qos",
+        "type": "qos",
         "sft-service-function-name": [
           {
             "name": "SF3"
@@ -527,10 +520,10 @@ SERVICE_FUNCTION_TYPE_JSON = """
         ]
       },
       {
-        "type": "service-function-type:ids",
+        "type": "napt44",
         "sft-service-function-name": [
           {
-            "name": "SF2"
+            "name": "SF5"
           }
         ]
       }