Add Configuration Management cases 55/48655/17
authorCelestino Martinez Lopez <celestino.martinez.lopez@ericsson.com>
Thu, 24 Nov 2016 10:06:52 +0000 (11:06 +0100)
committerJamo Luhrsen <jluhrsen@redhat.com>
Fri, 12 May 2017 23:26:19 +0000 (23:26 +0000)
  Add Service Function ACL Test cases

    - Add ACL
    - Delete All ACLs
    - Get one ACL
    - Get A Non-existing ACL
    - Delete an ACL

  Add Service Function Classifiers Test cases

    - Add Service Function Classifier
    - Delete All Classifiers
    - Get one Classifier
    - Get A Non-existing Classifier
    - Delete a Classifier

Change-Id: Ida72275700143be7fa63b2ea65b75a9caf753d96
Signed-off-by: Celestino Martinez Lopez <celestino.martinez.lopez@ericsson.com>
Signed-off-by: ejisfza <jose.luis.franco.arza@ericsson.com>
csit/suites/sfc/SFC_Basic/120__sfc_service_function_acl.robot [new file with mode: 0644]
csit/suites/sfc/SFC_Basic/140__sfc_service_function_classifier.robot [new file with mode: 0644]
csit/testplans/sfc-rest-basic.txt
csit/variables/sfc/master/service-function-acl.json [new file with mode: 0644]
csit/variables/sfc/master/service-function-classifiers.json [new file with mode: 0644]

diff --git a/csit/suites/sfc/SFC_Basic/120__sfc_service_function_acl.robot b/csit/suites/sfc/SFC_Basic/120__sfc_service_function_acl.robot
new file mode 100644 (file)
index 0000000..71e853b
--- /dev/null
@@ -0,0 +1,60 @@
+*** Settings ***
+Documentation     Test suite for SFC Service Function ACL, Operates functions from Restconf APIs.
+Suite Setup       Create Session    session    http://${ODL_SYSTEM_IP}:${RESTCONFPORT}    auth=${AUTH}    headers=${HEADERS}
+Suite Teardown    Delete All Sessions
+Test Setup        Remove All Elements If Exist    ${SERVICE_FUNCTION_ACL_URI}
+Test Teardown     Remove All Elements At URI    ${SERVICE_FUNCTION_ACL_URI}
+Library           SSHLibrary
+Library           Collections
+Library           OperatingSystem
+Library           RequestsLibrary
+Resource          ../../../variables/Variables.robot
+Resource          ../../../libraries/Utils.robot
+
+*** Variables ***
+${SERVICE_FUNCTION_ACL_URI}    /restconf/config/ietf-access-control-list:access-lists/
+${SERVICE_FUNCTION_ACL_FILE}    ${CURDIR}/../../../variables/sfc/master/service-function-acl.json
+
+*** Test Cases ***
+Add ACL
+    [Documentation]    Add Service Function ACL from JSON file
+    Add Elements To URI From File    ${SERVICE_FUNCTION_ACL_URI}    ${SERVICE_FUNCTION_ACL_FILE}
+    ${body}    OperatingSystem.Get File    ${SERVICE_FUNCTION_ACL_FILE}
+    ${jsonbody}    To Json    ${body}
+    ${functions}    Get From Dictionary    ${jsonbody}    access-lists
+    ${resp}    RequestsLibrary.Get Request    session    ${SERVICE_FUNCTION_ACL_URI}
+    ${result}    To JSON    ${resp.content}
+    Should Contain    ${ALLOWED_STATUS_CODES}    ${resp.status_code}
+    ${function}    Get From Dictionary    ${result}    access-lists
+    Lists Should be Equal    ${function}    ${functions}
+
+Delete All ACLs
+    [Documentation]    Delete all ACL
+    ${body}    OperatingSystem.Get File    ${SERVICE_FUNCTION_ACL_FILE}
+    Add Elements To URI From File    ${SERVICE_FUNCTION_ACL_URI}    ${SERVICE_FUNCTION_ACL_FILE}
+    ${resp}    RequestsLibrary.Get Request    session    ${SERVICE_FUNCTION_ACL_URI}
+    Should Be Equal As Strings    ${resp.status_code}    200
+    Remove All Elements At URI    ${SERVICE_FUNCTION_ACL_URI}
+    ${resp}    RequestsLibrary.Get Request    session    ${SERVICE_FUNCTION_ACL_URI}
+    Should Be Equal As Strings    ${resp.status_code}    404
+    [Teardown]    NONE
+
+Get one ACL
+    [Documentation]    Get one ACL
+    Add Elements To URI From File    ${SERVICE_FUNCTION_ACL_URI}    ${SERVICE_FUNCTION_ACL_FILE}
+    ${resp}    RequestsLibrary.Get Request    session    ${SERVICE_FUNCTION_ACL_URI}acl/ietf-access-control-list:ipv4-acl/ACL1
+    Should Be Equal As Strings    ${resp.status_code}    200
+
+Get A Non-existing ACL
+    [Documentation]    Get A Non-existing ACL
+    Add Elements To URI From File    ${SERVICE_FUNCTION_ACL_URI}    ${SERVICE_FUNCTION_ACL_FILE}
+    ${resp}    RequestsLibrary.Get Request    session    ${SERVICE_FUNCTION_ACL_URI}acl/unexisting-acl
+    Should Be Equal As Strings    ${resp.status_code}    404
+
+Delete An ACL
+    [Documentation]    Delete an ACL
+    Add Elements To URI From File    ${SERVICE_FUNCTION_ACL_URI}    ${SERVICE_FUNCTION_ACL_FILE}
+    Remove All Elements At URI    ${SERVICE_FUNCTION_ACL_URI}acl/ietf-access-control-list:ipv4-acl/ACL1
+    ${resp}    RequestsLibrary.Get Request    session    ${SERVICE_FUNCTION_ACL_URI}
+    Should Contain    ${ALLOWED_STATUS_CODES}    ${resp.status_code}
+    Should Not Contain    ${resp.content}    ACL1
diff --git a/csit/suites/sfc/SFC_Basic/140__sfc_service_function_classifier.robot b/csit/suites/sfc/SFC_Basic/140__sfc_service_function_classifier.robot
new file mode 100644 (file)
index 0000000..bc76f06
--- /dev/null
@@ -0,0 +1,60 @@
+*** Settings ***
+Documentation     Test suite for SFC Service Function Classifiers, Operates functions from Restconf APIs.
+Suite Setup       Create Session    session    http://${ODL_SYSTEM_IP}:${RESTCONFPORT}    auth=${AUTH}    headers=${HEADERS}
+Suite Teardown    Delete All Sessions
+Test Setup        Remove All Elements If Exist    ${SERVICE_CLASSIFIER_URI}
+Test Teardown     Remove All Elements At URI    ${SERVICE_CLASSIFIER_URI}
+Library           SSHLibrary
+Library           Collections
+Library           OperatingSystem
+Library           RequestsLibrary
+Resource          ../../../variables/Variables.robot
+Resource          ../../../libraries/Utils.robot
+
+*** Variables ***
+${SERVICE_CLASSIFIER_URI}    /restconf/config/service-function-classifier:service-function-classifiers/
+${SERVICE_CLASSIFIER_FILE}    ${CURDIR}/../../../variables/sfc/master/service-function-classifiers.json
+
+*** Test Cases ***
+Add Service Function Classifier
+    [Documentation]    Add Service Function Classifiers from JSON file
+    Add Elements To URI From File    ${SERVICE_CLASSIFIER_URI}    ${SERVICE_CLASSIFIER_FILE}
+    ${body}    OperatingSystem.Get File    ${SERVICE_CLASSIFIER_FILE}
+    ${jsonbody}    To Json    ${body}
+    ${functions}    Get From Dictionary    ${jsonbody}    service-function-classifiers
+    ${resp}    RequestsLibrary.Get Request    session    ${SERVICE_CLASSIFIER_URI}
+    ${result}    To JSON    ${resp.content}
+    Should Be Equal As Strings    ${resp.status_code}    200
+    ${function}    Get From Dictionary    ${result}    service-function-classifiers
+    Lists Should be Equal    ${function}    ${functions}
+
+Delete All Classifiers
+    [Documentation]    Delete all Classifiers
+    ${body}    OperatingSystem.Get File    ${SERVICE_CLASSIFIER_FILE}
+    Add Elements To URI From File    ${SERVICE_CLASSIFIER_URI}    ${SERVICE_CLASSIFIER_FILE}
+    ${resp}    RequestsLibrary.Get Request    session    ${SERVICE_CLASSIFIER_URI}
+    Should Contain    ${ALLOWED_STATUS_CODES}    ${resp.status_code}
+    Remove All Elements At URI    ${SERVICE_CLASSIFIER_URI}
+    ${resp}    RequestsLibrary.Get Request    session    ${SERVICE_CLASSIFIER_URI}
+    Should Be Equal As Strings    ${resp.status_code}    404
+    [Teardown]    NONE
+
+Get one Classifier
+    [Documentation]    Get one Classifier
+    Add Elements To URI From File    ${SERVICE_CLASSIFIER_URI}    ${SERVICE_CLASSIFIER_FILE}
+    ${resp}    RequestsLibrary.Get Request    session    ${SERVICE_CLASSIFIER_URI}service-function-classifier/Classifier1
+    Should Be Equal As Strings    ${resp.status_code}    200
+
+Get A Non-existing Classifier
+    [Documentation]    Get A Non-existing Classifier
+    Add Elements To URI From File    ${SERVICE_CLASSIFIER_URI}    ${SERVICE_CLASSIFIER_FILE}
+    ${resp}    RequestsLibrary.Get Request    session    ${SERVICE_CLASSIFIER_URI}service-function-classifier/unexisting-classifier
+    Should Be Equal As Strings    ${resp.status_code}    404
+
+Delete a Classifier
+    [Documentation]    Delete a classifier
+    Add Elements To URI From File    ${SERVICE_CLASSIFIER_URI}    ${SERVICE_CLASSIFIER_FILE}
+    Remove All Elements At URI    ${SERVICE_CLASSIFIER_URI}service-function-classifier/Classifier1
+    ${resp}    RequestsLibrary.Get Request    session    ${SERVICE_CLASSIFIER_URI}
+    Should Contain    ${ALLOWED_STATUS_CODES}    ${resp.status_code}
+    Should Not Contain    ${resp.content}    Classifier1
index a227423709e6e34c2779ed843baab894d3dfda62..c3d6728ae16e772a3847a7fa9ecbe8d3a974ba79 100644 (file)
@@ -11,4 +11,6 @@ integration/test/csit/suites/sfc/SFC_Basic/080__sfc_simple_clustering.robot
 integration/test/csit/suites/sfc/SFC_Basic/090__sfc_service_functions_logical.robot
 integration/test/csit/suites/sfc/SFC_Basic/100__sfc_service_forwarders_logical.robot
 integration/test/csit/suites/sfc/SFC_Basic/110__sfc_rendered_service_paths_logical.robot
+integration/test/csit/suites/sfc/SFC_Basic/120__sfc_service_function_acl.robot
 integration/test/csit/suites/sfc/SFC_Basic/130__sfc_symmetric_RSP.robot
+integration/test/csit/suites/sfc/SFC_Basic/140__sfc_service_function_classifier.robot
diff --git a/csit/variables/sfc/master/service-function-acl.json b/csit/variables/sfc/master/service-function-acl.json
new file mode 100644 (file)
index 0000000..3fb7a35
--- /dev/null
@@ -0,0 +1,56 @@
+{
+  "access-lists": {
+    "acl": [
+      {
+        "acl-name": "ACL1",
+        "acl-type": "ietf-access-control-list:ipv4-acl",
+        "access-list-entries": {
+          "ace": [
+            {
+              "rule-name": "ACE1",
+              "actions": {
+                "service-function-acl:rendered-service-path": "RSP1"
+              },
+              "matches": {
+                "destination-ipv4-network": "192.168.2.0/24",
+                "source-ipv4-network": "192.168.2.0/24",
+                "protocol": "6",
+                "source-port-range": {
+                    "lower-port": 0
+                },
+                "destination-port-range": {
+                    "lower-port": 80
+                }
+              }
+            }
+          ]
+        }
+      },
+      {
+        "acl-name": "ACL2",
+        "acl-type": "ietf-access-control-list:ipv4-acl",
+        "access-list-entries": {
+          "ace": [
+            {
+              "rule-name": "ACE2",
+              "actions": {
+                "service-function-acl:rendered-service-path": "RSP1-Reverse"
+              },
+              "matches": {
+                "destination-ipv4-network": "192.168.2.0/24",
+                "source-ipv4-network": "192.168.2.0/24",
+                "protocol": "6",
+                "source-port-range": {
+                    "lower-port": 80
+                },
+                "destination-port-range": {
+                    "lower-port": 0
+                }
+              }
+            }
+          ]
+        }
+      }
+    ]
+  }
+}
diff --git a/csit/variables/sfc/master/service-function-classifiers.json b/csit/variables/sfc/master/service-function-classifiers.json
new file mode 100644 (file)
index 0000000..70e1c12
--- /dev/null
@@ -0,0 +1,32 @@
+{
+  "service-function-classifiers": {
+    "service-function-classifier": [
+      {
+        "name": "Classifier1",
+        "scl-service-function-forwarder": [
+          {
+            "name": "Classifier1",
+            "interface": "veth-br"
+          }
+        ],
+        "acl": {
+            "name": "ACL1",
+            "type": "ietf-access-control-list:ipv4-acl"
+         }
+      },
+      {
+        "name": "Classifier2",
+        "scl-service-function-forwarder": [
+          {
+            "name": "Classifier2",
+            "interface": "veth-br"
+          }
+        ],
+        "acl": {
+            "name": "ACL2",
+            "type": "ietf-access-control-list:ipv4-acl"
+         }
+      }
+    ]
+  }
+}