Changing extension from .txt to .robot
[integration/test.git] / test / csit / suites / openflowplugin / MD_SAL_NSF_OF13 / 020__restconf_topology.robot
diff --git a/test/csit/suites/openflowplugin/MD_SAL_NSF_OF13/020__restconf_topology.robot b/test/csit/suites/openflowplugin/MD_SAL_NSF_OF13/020__restconf_topology.robot
new file mode 100644 (file)
index 0000000..f6d3f60
--- /dev/null
@@ -0,0 +1,82 @@
+*** Settings ***
+Documentation     Test suite RESTCONF Topology
+Suite Setup       Create Session    session    http://${CONTROLLER}:${RESTCONFPORT}    auth=${AUTH}    headers=${HEADERS}
+Suite Teardown    Delete All Sessions
+Library           Collections
+Library           ../../../libraries/RequestsLibrary.py
+Library           ../../../libraries/Common.py
+Variables         ../../../variables/Variables.py
+Resource          ../../../libraries/Utils.txt
+
+*** Variables ***
+${topology1}      "flow:1"
+${node1}          "openflow:1"
+${node2}          "openflow:2"
+${node3}          "openflow:3"
+@{node_list}      openflow:1    openflow:2    openflow:3
+${key}            link
+${REST_CONTEXT_1}    /restconf/operational/network-topology:network-topology
+${REST_CONTEXT_2}    /restconf/operational/network-topology:network-topology/topology/flow:1
+${REST_CONTEXT_3}    /restconf/config/network-topology:network-topology/topology/flow:1/link/userlink
+
+*** Test Cases ***
+Get RESTCONF Topology
+    [Documentation]    Get RESTCONF Topology and validate the result.
+    Wait Until Keyword Succeeds    30s    2s    Ensure All Nodes Are In Response    ${REST_CONTEXT_1}    ${node_list}
+    ${resp}    RequestsLibrary.Get    session    ${REST_CONTEXT_1}
+    Log    ${resp.content}
+    Should Be Equal As Strings    ${resp.status_code}    200
+    Should Contain    ${resp.content}    ${topology1}
+
+List all the links
+    [Documentation]    List all the links in the topology.
+    ${body1}    Create Dictionary    dest-node=openflow:1    dest-tp=openflow:1:2
+    ${body2}    Create Dictionary    source-node=openflow:3    source-tp=openflow:3:3
+    ${link2}    Create Dictionary    link-id=openflow:3:3    destination=${body1}    source=${body2}
+    ${body1}    Create Dictionary    dest-node=openflow:1    dest-tp=openflow:1:1
+    ${body2}    Create Dictionary    source-node=openflow:2    source-tp=openflow:2:3
+    ${link1}    Create Dictionary    link-id=openflow:2:3    destination=${body1}    source=${body2}
+    ${body1}    Create Dictionary    dest-node=openflow:3    dest-tp=openflow:3:3
+    ${body2}    Create Dictionary    source-node=openflow:1    source-tp=openflow:1:2
+    ${link4}    Create Dictionary    link-id=openflow:1:2    destination=${body1}    source=${body2}
+    ${body1}    Create Dictionary    dest-node=openflow:2    dest-tp=openflow:2:3
+    ${body2}    Create Dictionary    source-node=openflow:1    source-tp=openflow:1:1
+    ${link3}    Create Dictionary    link-id=openflow:1:1    destination=${body1}    source=${body2}
+    ${links}    Create List    ${link1}    ${link2}    ${link3}    ${link4}
+    Wait Until Keyword Succeeds    30s    2s    Verify Links    ${links}
+
+Add a link
+    [Documentation]    Add a link, list to validate the result.
+    ${body1}    Create Dictionary    dest-node=openflow:3    dest-tp=openflow:3:1
+    ${body2}    Create Dictionary    source-node=openflow:2    source-tp=openflow:2:1
+    ${body3}    Create Dictionary    link-id=userlink    destination=${body1}    source=${body2}
+    ${links}    Create List    ${body3}
+    ${body}    Create Dictionary    link=${links}
+    ${resp}    RequestsLibrary.Put    session    ${REST_CONTEXT_3}    data=${body}
+    Should Be Equal As Strings    ${resp.status_code}    200
+    ${resp}    RequestsLibrary.Get    session    ${REST_CONTEXT_3}
+    Should Be Equal As Strings    ${resp.status_code}    200
+    ${result}    To JSON    ${resp.content}
+    ${link}    Get From Dictionary    ${result}    link
+    Lists Should be Equal    ${link}    ${links}
+
+Remove a link
+    [Documentation]    Remove a link, list to validate the result.
+    ${resp}    RequestsLibrary.Delete    session    ${REST_CONTEXT_3}
+    Should Be Equal As Strings    ${resp.status_code}    200
+    ${resp}    RequestsLibrary.Get    session    ${REST_CONTEXT_3}
+    Should Be Equal As Strings    ${resp.status_code}    404
+
+*** Keywords ***
+Verify Links
+    [Arguments]    ${expected_links}
+    ${resp}    RequestsLibrary.Get    session    ${REST_CONTEXT_2}
+    Log    ${resp.content}
+    Should Be Equal As Strings    ${resp.status_code}    200
+    ${result}    To JSON    ${resp.content}
+    Log    ${result}
+    ${content}    Get From Dictionary    ${result}    topology
+    ${topology}    Get From List    ${content}    0
+    ${link}    Get From Dictionary    ${topology}    link
+    Sort List    ${link}
+    Lists Should be Equal    ${link}    ${expected_links}