large rework to optimize test code.
[integration/test.git] / test / csit / suites / karaf-compatible / 010__MD_SAL_NSF / 030__restconf_topology.txt
index b4e3495f54b531f2fc9e65c60325525f4047b134..6feb9dacbb7b3459dde204b63a6d26eabb4884ce 100644 (file)
@@ -1,18 +1,20 @@
 *** Settings ***
-Documentation     Test suite for RESTCONF Topology 
-Suite Setup       Create Session   session   http://${CONTROLLER}:${RESTCONFPORT}   auth=${AUTH}   headers=${HEADERS}
+Documentation     Test suite for 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"
-${key}       link
+${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
@@ -21,45 +23,39 @@ ${REST_CONTEXT_3}    /restconf/config/network-topology:network-topology/topology
 Get RESTCONF Topology
     [Documentation]    Get RESTCONF Topology and validate the result.
     [Tags]    get
+    Wait Until Keyword Succeeds    30s    2s    Ensure All Nodes Are In Response    ${REST_CONTEXT_1}    ${node_list}
     ${resp}    Get    session    ${REST_CONTEXT_1}
-    Should Be Equal As Strings    ${resp.status_code}    200 
+    Should Be Equal As Strings    ${resp.status_code}    200
     Log    ${resp.content}
-    Should Contain   ${resp.content}   ${topology1}  
-   
+    Should Contain    ${resp.content}    ${topology1}
+
 List all the links
     [Documentation]    List all the links in the topology.
     [Tags]    get
     ${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}
+    ${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}
+    ${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}
+    ${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}
-    ${resp}    Get    session    ${REST_CONTEXT_2}
-    Should Be Equal As Strings    ${resp.status_code}    200 
-    ${result}    To JSON    ${resp.content}
-    ${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}    ${links}
+    ${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.
     [Tags]    add
-    ${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}
+    ${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}    Put    session    ${REST_CONTEXT_3}   data=${body}
+    ${resp}    Put    session    ${REST_CONTEXT_3}    data=${body}
     Should Be Equal As Strings    ${resp.status_code}    200
     ${resp}    Get    session    ${REST_CONTEXT_3}
     Should Be Equal As Strings    ${resp.status_code}    200
@@ -67,11 +63,24 @@ Add a link
     ${link}    Get From Dictionary    ${result}    link
     Lists Should be Equal    ${link}    ${links}
 
-
 Remove a link
     [Documentation]    Remove a link, list to validate the result.
     [Tags]    remove
-    ${resp}    Delete   session    ${REST_CONTEXT_3}  
+    ${resp}    Delete    session    ${REST_CONTEXT_3}
     Should Be Equal As Strings    ${resp.status_code}    200
     ${resp}    Get    session    ${REST_CONTEXT_3}
     Should Be Equal As Strings    ${resp.status_code}    404
+
+*** Keywords ***
+Verify Links
+    [Arguments]    ${expected_links}
+    ${resp}    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}