Add tests for symmetric paths using bidirectional flag in SF type 93/50393/5
authoreabasan <santiago.abascal@ericsson.com>
Fri, 13 Jan 2017 08:32:53 +0000 (09:32 +0100)
committerJamo Luhrsen <jluhrsen@redhat.com>
Tue, 24 Jan 2017 06:27:07 +0000 (06:27 +0000)
Change-Id: I33d39ce4fec52c5242e03751ab2cfea6dfff5acc
Signed-off-by: eabasan <santiago.abascal@ericsson.com>
.gitignore
csit/suites/sfc/SFC_Basic/130__sfc_symmetric_RSP.robot [new file with mode: 0644]
csit/testplans/sfc-rest-basic.txt
csit/variables/sfc/Variables.robot
csit/variables/sfc/master/symmetricRSP/service_function_chains.json [new file with mode: 0644]
csit/variables/sfc/master/symmetricRSP/service_function_forwarders.json [new file with mode: 0644]
csit/variables/sfc/master/symmetricRSP/service_function_paths.json [new file with mode: 0644]
csit/variables/sfc/master/symmetricRSP/service_function_types.json [new file with mode: 0644]
csit/variables/sfc/master/symmetricRSP/service_functions.json [new file with mode: 0644]
csit/variables/sfc/master/symmetricRSP/service_nodes.json [new file with mode: 0644]

index 795e713e6933a2397275e309a098d62df364835e..873a2cf1fa1553e085e64d33d9e453fa9f7d4bec 100644 (file)
@@ -26,3 +26,4 @@ report.html
 .vagrant
 .tox/
 *.egg-info/
+.*.marks
diff --git a/csit/suites/sfc/SFC_Basic/130__sfc_symmetric_RSP.robot b/csit/suites/sfc/SFC_Basic/130__sfc_symmetric_RSP.robot
new file mode 100644 (file)
index 0000000..6a86b97
--- /dev/null
@@ -0,0 +1,86 @@
+*** Settings ***
+Documentation     Test suite for symmetric RSP using bidirectional field of SF type.
+Suite Setup       Init Suite
+Suite Teardown    End Suite
+Library           SSHLibrary
+Library           Collections
+Library           OperatingSystem
+Library           RequestsLibrary
+Library           HttpLibrary.HTTP
+Resource          ../../../variables/sfc/Variables.robot
+Resource          ../../../libraries/Utils.robot
+Resource          ../../../libraries/TemplatedRequests.robot
+
+*** Variables ***
+${VERSION_DIR}    master
+${SUITE_DIR}      ${CURDIR}/../../../variables/sfc/${VERSION_DIR}/symmetricRSP
+${SERVICE_NODES_FILE}    ${SUITE_DIR}/service_nodes.json
+${SERVICE_FUNCTION_TYPES_FILE}    ${SUITE_DIR}/service_function_types.json
+${SERVICE_FUNCTIONS_FILE}    ${SUITE_DIR}/service_functions.json
+${SERVICE_FORWARDERS_FILE}    ${SUITE_DIR}/service_function_forwarders.json
+${SERVICE_CHAINS_FILE}    ${SUITE_DIR}/service_function_chains.json
+${SERVICE_FUNCTION_PATHS_FILE}    ${SUITE_DIR}/service_function_paths.json
+${CREATE_RSP1_INPUT}    {"input":{"parent-service-function-path":"SFP1","name":"RSP1"}}
+${CREATE_RSP2_INPUT}    {"input":{"parent-service-function-path":"SFP2","name":"RSP2"}}
+${CREATE_RSP3_INPUT}    {"input":{"parent-service-function-path":"SFP3","name":"RSP3"}}
+${DELETE_RSP1_INPUT}    {"input":{"name":"RSP1"}}
+${DELETE_RSP2_INPUT}    {"input":{"name":"RSP2"}}
+${DELETE_RSP3_INPUT}    {"input":{"name":"RSP3"}}
+
+*** Test Cases ***
+Create symmetric RSP with bidirectional flag set true in one SF type
+    Post Elements To URI    ${OPERATIONS_CREATE_RSP_URI}    ${CREATE_RSP1_INPUT}
+    ${resp}    RequestsLibrary.Get Request    session    ${OPERATIONAL_RSPS_URI}
+    Should Be Equal As Strings    ${resp.status_code}    200
+    ${elements}=    Create List    RSP1    RSP1-Reverse
+    Check For Elements At URI    ${OPERATIONAL_RSPS_URI}    ${elements}
+    [Teardown]    Post Elements To URI    ${OPERATIONS_DELETE_RSP_URI}    ${DELETE_RSP1_INPUT}
+
+Create non-symmetric RSP with bidirectional flag set false or not set in all SFs
+    Post Elements To URI    ${OPERATIONS_CREATE_RSP_URI}    ${CREATE_RSP2_INPUT}
+    ${resp}    RequestsLibrary.Get Request    session    ${OPERATIONAL_RSPS_URI}
+    Should Be Equal As Strings    ${resp.status_code}    200
+    Log    ${resp.content}
+    Should Contain    ${resp.content}    RSP2
+    Should Not Contain    ${resp.content}    RSP2-Reverse
+    [Teardown]    Post Elements To URI    ${OPERATIONS_DELETE_RSP_URI}    ${DELETE_RSP2_INPUT}
+
+Create non-symmetric RSP overriding bidirectional flag with SFP symmetric flag
+    Post Elements To URI    ${OPERATIONS_CREATE_RSP_URI}    ${CREATE_RSP3_INPUT}
+    # Note that SFP3 uses SFC1, which contains a dpi-bidirectional, but it's
+    # overriden with symmetric flag in SFP set to false
+    ${resp}    RequestsLibrary.Get Request    session    ${OPERATIONAL_RSPS_URI}
+    Should Be Equal As Strings    ${resp.status_code}    200
+    Log    ${resp.content}
+    Should Contain    ${resp.content}    RSP3
+    Should Not Contain    ${resp.content}    RSP3-Reverse
+    [Teardown]    Post Elements To URI    ${OPERATIONS_DELETE_RSP_URI}    ${DELETE_RSP3_INPUT}
+
+*** Keywords ***
+Init Suite
+    [Documentation]    Create session and initialize ODL version specific variables
+    Create Session    session    http://${ODL_SYSTEM_IP}:${RESTCONFPORT}    auth=${AUTH}    headers=${HEADERS}
+    log    ${ODL_STREAM}
+    Basic Environment Setup
+
+Basic Environment Setup
+    [Documentation]    Provision all elements except RSPs
+    Clean Datastore
+    Add Elements To URI From File    ${SERVICE_FORWARDERS_URI}    ${SERVICE_FORWARDERS_FILE}
+    Add Elements To URI From File    ${SERVICE_NODES_URI}    ${SERVICE_NODES_FILE}
+    Add Elements To URI From File    ${SERVICE_FUNCTION_TYPES_URI}    ${SERVICE_FUNCTION_TYPES_FILE}
+    Add Elements To URI From File    ${SERVICE_FUNCTIONS_URI}    ${SERVICE_FUNCTIONS_FILE}
+    Add Elements To URI From File    ${SERVICE_CHAINS_URI}    ${SERVICE_CHAINS_FILE}
+    Add Elements To URI From File    ${SERVICE_FUNCTION_PATHS_URI}    ${SERVICE_FUNCTION_PATHS_FILE}
+
+End Suite
+    Clean Datastore
+    Delete All Sessions
+
+Clean Datastore
+    [Documentation]    Remove All Elements
+    Remove All Elements If Exist    ${SERVICE_FUNCTIONS_URI}
+    Remove All Elements If Exist    ${SERVICE_FORWARDERS_URI}
+    Remove All Elements If Exist    ${SERVICE_NODES_URI}
+    Remove All Elements If Exist    ${SERVICE_CHAINS_URI}
+    Remove All Elements If Exist    ${SERVICE_FUNCTION_PATHS_URI}
index 23c8c497995ddc132e034fee24b989e0fa12e9ca..f9a55c182f8c62d20a973cce60b0e2c79e749814 100644 (file)
@@ -7,3 +7,4 @@ integration/test/csit/suites/sfc/SFC_Basic/050__sfc_service_schedule_types.robot
 integration/test/csit/suites/sfc/SFC_Basic/060__sfc_service_paths.robot
 integration/test/csit/suites/sfc/SFC_Basic/070__sfc_rendered_service_paths.robot
 integration/test/csit/suites/sfc/SFC_Basic/080__sfc_simple_clustering.robot
+integration/test/csit/suites/sfc/SFC_Basic/130__sfc_symmetric_RSP.robot
index 4525df66e458089e3e309f1ae8b41421bd618a73..d8b095da43cfd6c32c93bdeb98b96b3668010472 100644 (file)
@@ -1,5 +1,6 @@
 *** Variables ***
 # Generic Service Chains and Function URIs
+${SERVICE_FUNCTION_TYPES_URI}    /restconf/config/service-function-type:service-function-types/
 ${SERVICE_FUNCTIONS_URI}    /restconf/config/service-function:service-functions/
 ${SERVICE_FUNCTION_ACLS_URI}    /restconf/config/ietf-access-control-list:access-lists/
 ${SERVICE_CLASSIFIERS_URI}    /restconf/config/service-function-classifier:service-function-classifiers/
diff --git a/csit/variables/sfc/master/symmetricRSP/service_function_chains.json b/csit/variables/sfc/master/symmetricRSP/service_function_chains.json
new file mode 100644 (file)
index 0000000..705a174
--- /dev/null
@@ -0,0 +1,32 @@
+{
+    "service-function-chains": {
+        "service-function-chain": [
+            {
+                "name": "SFC1",
+                "sfc-service-function": [
+                    {
+                        "name": "dpi-abstract1",
+                        "type": "dpi-bidirectional"
+                    },
+                    {
+                        "name": "firewall-abstract1",
+                        "type": "firewall"
+                    }
+                ]
+            },
+            {
+                "name": "SFC2",
+                "sfc-service-function": [
+                    {
+                        "name": "dpi-abstract2",
+                        "type": "dpi-non-bidirectional"
+                    },
+                    {
+                        "name": "firewall-abstract1",
+                        "type": "firewall"
+                    }
+                ]
+            }
+        ]
+    }
+}
diff --git a/csit/variables/sfc/master/symmetricRSP/service_function_forwarders.json b/csit/variables/sfc/master/symmetricRSP/service_function_forwarders.json
new file mode 100644 (file)
index 0000000..f8ade96
--- /dev/null
@@ -0,0 +1,136 @@
+{
+    "service-function-forwarders": {
+        "service-function-forwarder": [
+           {
+                "name": "Classifier1",
+                "service-node": "classifier1",
+                "service-function-forwarder-ovs:ovs-bridge": {
+                    "bridge-name": "br-sfc"
+                },
+                "sff-data-plane-locator": [
+                    {
+                        "name": "sff0-dpl",
+                        "data-plane-locator": {
+                            "transport": "service-locator:vxlan-gpe",
+                            "port": 6633,
+                            "ip": "192.168.1.10"
+                        },
+                        "service-function-forwarder-ovs:ovs-options": {
+                            "remote-ip": "flow",
+                            "dst-port": "6633",
+                            "key": "flow",
+                            "nsp": "flow",
+                            "nsi": "flow",
+                            "nshc1": "flow",
+                            "nshc2": "flow",
+                            "nshc3": "flow",
+                            "nshc4": "flow"
+                        }
+                    }
+                ]
+            },
+            {
+                "name": "SFF1",
+                "service-node": "sff1",
+                "service-function-forwarder-ovs:ovs-bridge": {
+                    "bridge-name": "br-sfc"
+                },
+                "sff-data-plane-locator": [
+                    {
+                        "name": "sff1-dpl",
+                        "data-plane-locator": {
+                            "transport": "service-locator:vxlan-gpe",
+                            "port": 6633,
+                            "ip": "192.168.1.20"
+                        },
+                        "service-function-forwarder-ovs:ovs-options": {
+                            "remote-ip": "flow",
+                            "dst-port": "6633",
+                            "key": "flow",
+                            "nsp": "flow",
+                            "nsi": "flow",
+                            "nshc1": "flow",
+                            "nshc2": "flow",
+                            "nshc3": "flow",
+                            "nshc4": "flow"
+                        }
+                    }
+                ],
+                "service-function-dictionary": [
+                    {
+                        "name": "dpi-1",
+                        "sff-sf-data-plane-locator": {
+                             "sf-dpl-name": "dpi-1-dpl",
+                             "sff-dpl-name": "sff1-dpl"
+                        }
+                    }
+                ]
+            },
+            {
+                "name": "SFF2",
+                "service-node": "sff2",
+                "service-function-forwarder-ovs:ovs-bridge": {
+                    "bridge-name": "br-sfc"
+                },
+                "sff-data-plane-locator": [
+                    {
+                        "name": "sff2-dpl",
+                        "data-plane-locator": {
+                            "transport": "service-locator:vxlan-gpe",
+                            "port": 6633,
+                            "ip": "192.168.1.50"
+                        },
+                        "service-function-forwarder-ovs:ovs-options": {
+                            "remote-ip": "flow",
+                            "dst-port": "6633",
+                            "key": "flow",
+                            "nsp": "flow",
+                            "nsi": "flow",
+                            "nshc1": "flow",
+                            "nshc2": "flow",
+                            "nshc3": "flow",
+                            "nshc4": "flow"
+                        }
+                    }
+                ],
+                "service-function-dictionary": [
+                    {
+                        "name": "firewall-1",
+                        "sff-sf-data-plane-locator": {
+                            "sf-dpl-name": "firewall-1-dpl",
+                            "sff-dpl-name": "sff2-dpl"
+                        }
+                    }
+                ]
+            },
+            {
+                "name": "Classifier2",
+                "service-node": "classifier2",
+                "service-function-forwarder-ovs:ovs-bridge": {
+                    "bridge-name": "br-sfc"
+                },
+                "sff-data-plane-locator": [
+                    {
+                        "name": "sff3-dpl",
+                        "data-plane-locator": {
+                            "transport": "service-locator:vxlan-gpe",
+                            "port": 6633,
+                            "ip": "192.168.1.60"
+                        },
+                        "service-function-forwarder-ovs:ovs-options": {
+                            "remote-ip": "flow",
+                            "dst-port": "6633",
+                            "key": "flow",
+                            "nsp": "flow",
+                            "nsi": "flow",
+                            "nshc1": "flow",
+                            "nshc2": "flow",
+                            "nshc3": "flow",
+                            "nshc4": "flow"
+                        }
+                    }
+                ]
+            }
+        ]
+    }
+}
diff --git a/csit/variables/sfc/master/symmetricRSP/service_function_paths.json b/csit/variables/sfc/master/symmetricRSP/service_function_paths.json
new file mode 100644 (file)
index 0000000..72e3c19
--- /dev/null
@@ -0,0 +1,43 @@
+{
+    "service-function-paths": {
+        "service-function-path": [
+            {
+                "name": "SFP1",
+                "service-chain-name": "SFC1",
+                "starting-index": 255,
+                "context-metadata": "NSH1",
+                "service-path-hop": [
+                    {
+                        "hop-number": 0,
+                        "service-function-name": "dpi-1"
+                    }
+                ]
+            },
+            {
+                "name": "SFP2",
+                "service-chain-name": "SFC2",
+                "starting-index": 255,
+                "context-metadata": "NSH1",
+                "service-path-hop": [
+                    {
+                        "hop-number": 0,
+                        "service-function-name": "dpi-2"
+                    }
+                ]
+            },
+            {
+                "name": "SFP3",
+                "service-chain-name": "SFC1",
+                "starting-index": 255,
+                "symmetric": "false",
+                "context-metadata": "NSH1",
+                "service-path-hop": [
+                    {
+                        "hop-number": 0,
+                        "service-function-name": "dpi-2"
+                    }
+                ]
+            }
+        ]
+    }
+}
diff --git a/csit/variables/sfc/master/symmetricRSP/service_function_types.json b/csit/variables/sfc/master/symmetricRSP/service_function_types.json
new file mode 100644 (file)
index 0000000..8d7d990
--- /dev/null
@@ -0,0 +1,16 @@
+{
+  "service-function-types": {
+    "service-function-type": [
+      {
+        "type": "dpi-bidirectional",
+        "bidirectional": "true",
+        "nsh-aware": "true"
+      },
+      {
+        "type": "dpi-non-bidirectional",
+        "bidirectional": "false",
+        "nsh-aware": "true"
+      }
+    ]
+  }
+}
diff --git a/csit/variables/sfc/master/symmetricRSP/service_functions.json b/csit/variables/sfc/master/symmetricRSP/service_functions.json
new file mode 100644 (file)
index 0000000..f51117a
--- /dev/null
@@ -0,0 +1,51 @@
+{
+    "service-functions": {
+        "service-function": [
+            {
+                "name": "dpi-1",
+                "ip-mgmt-address": "192.168.1.30",
+                "rest-uri": "http://192.168.1.30:5000",
+                "type": "dpi-bidirectional",
+                "sf-data-plane-locator": [
+                    {
+                        "name": "dpi-1-dpl",
+                        "port": 6633,
+                        "ip": "192.168.1.30",
+                        "transport": "service-locator:vxlan-gpe",
+                        "service-function-forwarder": "SFF1"
+                    }
+                ]
+            },
+            {
+                "name": "firewall-1",
+                "ip-mgmt-address": "192.168.1.40",
+                "rest-uri": "http://192.168.1.40:5000",
+                "type": "firewall",
+                "sf-data-plane-locator": [
+                    {
+                        "name": "firewall-1-dpl",
+                        "port": 6633,
+                        "ip": "192.168.1.40",
+                        "transport": "service-locator:vxlan-gpe",
+                        "service-function-forwarder": "SFF2"
+                    }
+                ]
+            },
+            {
+                "name": "dpi-2",
+                "ip-mgmt-address": "192.168.1.35",
+                "rest-uri": "http://192.168.1.35:5000",
+                "type": "dpi-non-bidirectional",
+                "sf-data-plane-locator": [
+                    {
+                        "name": "dpi-2-dpl",
+                        "port": 6633,
+                        "ip": "192.168.1.35",
+                        "transport": "service-locator:vxlan-gpe",
+                        "service-function-forwarder": "SFF1"
+                    }
+                ]
+            }
+        ]
+    }
+}
diff --git a/csit/variables/sfc/master/symmetricRSP/service_nodes.json b/csit/variables/sfc/master/symmetricRSP/service_nodes.json
new file mode 100644 (file)
index 0000000..59d8298
--- /dev/null
@@ -0,0 +1,51 @@
+{
+    "service-nodes": {
+        "service-node": [
+            {
+                "name": "classifier1",
+                "service-function": [
+                ],
+                "ip-mgmt-address": "192.168.1.10"
+            },
+            {
+                "name": "sff1",
+                "service-function": [
+                ],
+                "ip-mgmt-address": "192.168.1.20"
+            },
+            {
+                "name": "sf1",
+                "service-function": [
+                    "dpi-1"
+                ],
+                "ip-mgmt-address": "192.168.1.30"
+            },
+            {
+                "name": "sf2",
+                "service-function": [
+                    "firewall-1"
+                ],
+                "ip-mgmt-address": "192.168.1.40"
+            },
+            {
+                "name": "sf3",
+                "service-function": [
+                    "dpi-2"
+                ],
+                "ip-mgmt-address": "192.168.1.35"
+            },
+            {
+                "name": "sff2",
+                "service-function": [
+                ],
+                "ip-mgmt-address": "192.168.1.50"
+            },
+            {
+                "name": "classifier2",
+                "service-function": [
+                ],
+                "ip-mgmt-address": "192.168.1.60"
+            }
+        ]
+    }
+}