*** Settings ***
-Documentation Switch connections and cluster are restarted.
-Suite Setup Initialization Phase
-Suite Teardown Final Phase
-Test Setup SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
-Library RequestsLibrary
-Library Collections
-Resource ../../../libraries/SetupUtils.robot
-Resource ../../../libraries/ClusterManagement.robot
-Resource ../../../libraries/ClusterOpenFlow.robot
-Resource ../../../libraries/TemplatedRequests.robot
-Resource ../../../libraries/MininetKeywords.robot
-Resource ../../../libraries/Utils.robot
-Resource ../../../libraries/OvsManager.robot
-Resource ../../../variables/Variables.robot
+Documentation Switch connections and cluster are restarted.
+
+Library RequestsLibrary
+Library Collections
+Resource ../../../libraries/SetupUtils.robot
+Resource ../../../libraries/ClusterManagement.robot
+Resource ../../../libraries/ClusterOpenFlow.robot
+Resource ../../../libraries/TemplatedRequests.robot
+Resource ../../../libraries/MininetKeywords.robot
+Resource ../../../libraries/Utils.robot
+Resource ../../../libraries/OvsManager.robot
+Resource ../../../variables/Variables.robot
+Resource ../../../variables/openflowplugin/Variables.robot
+
+Suite Setup Initialization Phase
+Suite Teardown Final Phase
+Test Setup SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
+
*** Variables ***
-${SWITCHES} 3
-${ITER} 100
-${VAR_DIR} ${CURDIR}/../../../variables/openflowplugin
+${SWITCHES} 3
+${ITER} 100
+${VAR_DIR} ${CURDIR}/../../../variables/openflowplugin
+
*** Test Cases ***
Add Groups And Flows
Start Mininet Multiple Connections
[Documentation] Start mininet linear with connection to all cluster instances.
${cluster_index_list}= ClusterManagement.List All Indices
- ${mininet_conn_id}= MininetKeywords.Start Mininet Multiple Controllers ${TOOLS_SYSTEM_IP} ${cluster_index_list} --topo linear,${SWITCHES}
+ ${mininet_conn_id}= MininetKeywords.Start Mininet Multiple Controllers
+ ... ${TOOLS_SYSTEM_IP}
+ ... ${cluster_index_list}
+ ... --topo linear,${SWITCHES}
BuiltIn.Set Suite Variable ${cluster_index_list}
BuiltIn.Set Suite Variable ${mininet_conn_id}
- BuiltIn.Wait Until Keyword Succeeds 10s 1s OVSDB.Check OVS OpenFlow Connections ${TOOLS_SYSTEM_IP} ${SWITCHES*3}
+ BuiltIn.Wait Until Keyword Succeeds
+ ... 10s
+ ... 1s
+ ... OVSDB.Check OVS OpenFlow Connections
+ ... ${TOOLS_SYSTEM_IP}
+ ... ${SWITCHES*3}
Check Linear Topology
[Documentation] Check Linear Topology.
Check Groups In Operational DS
[Documentation] Check Groups in operational DS.
- BuiltIn.Wait Until Keyword Succeeds 10s 1s ClusterOpenFlow.Check Number Of Groups On Member ${all_groups}
+ BuiltIn.Wait Until Keyword Succeeds
+ ... 10s
+ ... 1s
+ ... ClusterOpenFlow.Check Number Of Groups On Member
+ ... ${all_groups}
Check Flows In Switch
[Documentation] Check Flows in switch.
Check Entity Owner Status And Find Owner and Successor Before Fail
[Documentation] Check Entity Owner Status and identify owner and successor for first switch s1.
- ${original_owner} ${original_successor_list} ClusterOpenFlow.Get OpenFlow Entity Owner Status For One Device openflow:1 1
+ ${original_owner} ${original_successor_list}= ClusterOpenFlow.Get OpenFlow Entity Owner Status For One Device
+ ... openflow:1
+ ... 1
BuiltIn.Set Suite Variable ${original_owner}
BuiltIn.Set Suite Variable ${new_cluster_list} ${original_successor_list}
Disconnect Mininet From Owner
[Documentation] Disconnect mininet from the owner
- ${original_owner_list} BuiltIn.Create List ${original_owner}
+ ${original_owner_list}= BuiltIn.Create List ${original_owner}
MininetKeywords.Disconnect Cluster Mininet break ${original_owner_list}
BuiltIn.Set Suite Variable ${original_owner_list}
Check Entity Owner Status And Find Owner and Successor After Fail
[Documentation] Check Entity Owner Status and identify owner and successor for first switch s1.
- ${new_owner} ${new_successor_list} BuiltIn.Wait Until Keyword Succeeds 10s 1s ClusterOpenFlow.Get OpenFlow Entity Owner Status For One Device openflow:1
- ... 1 ${new_cluster_list} after_stop=True
+ ${new_owner} ${new_successor_list}= BuiltIn.Wait Until Keyword Succeeds
+ ... 10s
+ ... 1s
+ ... ClusterOpenFlow.Get OpenFlow Entity Owner Status For One Device
+ ... openflow:1
+ ... 1
+ ... ${new_cluster_list}
+ ... after_stop=True
${owner_list}= BuiltIn.Create List ${original_owner} ${new_owner}
BuiltIn.Set Suite Variable ${owner_list}
BuiltIn.Set Suite Variable ${new_owner}
Check Switch Moves To New Master
[Documentation] Check switch s1 is connected to new Master.
${new_master}= BuiltIn.Set Variable ${ODL_SYSTEM_${new_owner}_IP}
- BuiltIn.Wait Until Keyword Succeeds 10s 1s OvsManager.Should Be Master s1 ${new_master} update_data=${True}
+ BuiltIn.Wait Until Keyword Succeeds
+ ... 10s
+ ... 1s
+ ... OvsManager.Should Be Master
+ ... s1
+ ... ${new_master}
+ ... update_data=${True}
Check Linear Topology After Disconnect
[Documentation] Check Linear Topology.
Check Flows In Operational DS After Mininet Is Disconnected
[Documentation] Check Flows in Operational DS.
- BuiltIn.Wait Until Keyword Succeeds 30s 1s ClusterOpenFlow.Check Number Of Flows On Member ${less_flows}
+ BuiltIn.Wait Until Keyword Succeeds
+ ... 30s
+ ... 1s
+ ... ClusterOpenFlow.Check Number Of Flows On Member
+ ... ${less_flows}
Check Groups In Operational DS After Mininet Is Disconnected
[Documentation] Check Groups in Operational DS.
- BuiltIn.Wait Until Keyword Succeeds 10s 1s ClusterOpenFlow.Check Number Of Groups On Member ${less_groups}
+ BuiltIn.Wait Until Keyword Succeeds
+ ... 10s
+ ... 1s
+ ... ClusterOpenFlow.Check Number Of Groups On Member
+ ... ${less_groups}
Check Flows In Switch After Mininet Is Disconnected
[Documentation] Check Flows in switch.
Check Entity Owner Status And Find Owner and Successor After Reconnect
[Documentation] Check Entity Owner Status and identify owner and successor for first switch s1.
- BuiltIn.Wait Until Keyword Succeeds 10s 1s ClusterOpenFlow.Get OpenFlow Entity Owner Status For One Device openflow:1 1
+ BuiltIn.Wait Until Keyword Succeeds
+ ... 10s
+ ... 1s
+ ... ClusterOpenFlow.Get OpenFlow Entity Owner Status For One Device
+ ... openflow:1
+ ... 1
Add Flows And Groups After Owner Reconnect
[Documentation] Add 1 group type 1&2 and 1 flow in every switch.
Check Groups After Owner Reconnect In Operational DS
[Documentation] Check Groups in Operational DS.
- BuiltIn.Wait Until Keyword Succeeds 10s 1s ClusterOpenFlow.Check Number Of Groups On Member ${all_groups}
+ BuiltIn.Wait Until Keyword Succeeds
+ ... 10s
+ ... 1s
+ ... ClusterOpenFlow.Check Number Of Groups On Member
+ ... ${all_groups}
Check Flows After Owner Reconnect In Switch
[Documentation] Check Flows in switch.
Check Switches Generate Slave Connection
[Documentation] Check switches are connected to new Slave.
${original_master}= BuiltIn.Set Variable ${ODL_SYSTEM_${original_owner}_IP}
- : FOR ${switch} IN RANGE 1 ${switches+1}
- \ BuiltIn.Wait Until Keyword Succeeds 50s 1s OvsManager.Should Be Slave s1 ${original_master}
- \ ... update_data=${True}
+ FOR ${switch} IN RANGE 1 ${switches+1}
+ BuiltIn.Wait Until Keyword Succeeds
+ ... 50s
+ ... 1s
+ ... OvsManager.Should Be Slave
+ ... s${switch}
+ ... ${original_master}
+ ... update_data=${True}
+ END
Disconnect Mininet From Successor
[Documentation] Disconnect mininet from the Successor.
Check Entity Owner Status And Find New Owner and Successor After Disconnect
[Documentation] Check Entity Owner Status and identify owner and successor for first switch s1.
- ${current_owner} ${current_successor_list} BuiltIn.Wait Until Keyword Succeeds 10s 1s ClusterOpenFlow.Get OpenFlow Entity Owner Status For One Device openflow:1
- ... 1 ${owner_list} after_stop=True
+ ${current_owner} ${current_successor_list}= BuiltIn.Wait Until Keyword Succeeds
+ ... 10s
+ ... 1s
+ ... ClusterOpenFlow.Get OpenFlow Entity Owner Status For One Device
+ ... openflow:1
+ ... 1
+ ... ${owner_list}
+ ... after_stop=True
BuiltIn.Set Suite Variable ${current_owner}
BuiltIn.Set Suite Variable ${current_successor_list}
Check Entity Owner Status And Find Current Owner and Successor After Disconnect
[Documentation] Check Entity Owner Status and identify owner and successor for first switch s1.
- ${current_new_owner} ${current_new_successor_list} BuiltIn.Wait Until Keyword Succeeds 10s 1s ClusterOpenFlow.Get OpenFlow Entity Owner Status For One Device openflow:1
- ... 1 ${original_owner_list} after_stop=True
+ ${current_new_owner} ${current_new_successor_list}= BuiltIn.Wait Until Keyword Succeeds
+ ... 10s
+ ... 1s
+ ... ClusterOpenFlow.Get OpenFlow Entity Owner Status For One Device
+ ... openflow:1
+ ... 1
+ ... ${original_owner_list}
+ ... after_stop=True
BuiltIn.Set Suite Variable ${current_new_owner}
BuiltIn.Set Suite Variable ${current_new_successor_list}
Check Switch Moves To Current Master
[Documentation] Check switch s1 is connected to original Master.
${current_new_master}= BuiltIn.Set Variable ${ODL_SYSTEM_${current_new_owner}_IP}
- BuiltIn.Wait Until Keyword Succeeds 10s 1s OvsManager.Should Be Master s1 ${current_new_master} update_data=${True}
+ BuiltIn.Wait Until Keyword Succeeds
+ ... 10s
+ ... 1s
+ ... OvsManager.Should Be Master
+ ... s1
+ ... ${current_new_master}
+ ... update_data=${True}
BuiltIn.Should Be Equal ${current_new_owner} ${original_owner}
Check Linear Topology After Owner Disconnect
Check Flows In Operational DS After Owner Disconnected
[Documentation] Check Flows in Operational DS.
- BuiltIn.Wait Until Keyword Succeeds 30s 1s ClusterOpenFlow.Check Number Of Flows On Member ${less_flows}
+ BuiltIn.Wait Until Keyword Succeeds
+ ... 30s
+ ... 1s
+ ... ClusterOpenFlow.Check Number Of Flows On Member
+ ... ${less_flows}
Check Groups In Operational DS After Owner Disconnected
[Documentation] Check Groups in Operational DS.
- BuiltIn.Wait Until Keyword Succeeds 10s 1s ClusterOpenFlow.Check Number Of Groups On Member ${less_groups}
+ BuiltIn.Wait Until Keyword Succeeds
+ ... 10s
+ ... 1s
+ ... ClusterOpenFlow.Check Number Of Groups On Member
+ ... ${less_groups}
Check Flows In Switch After Owner Disconnected
[Documentation] Check Flows in switch.
Check Switch Is Not Connected
[Documentation] Check switch s1 is not connected to any controller.
- : FOR ${index} IN @{cluster_index_list}
- \ BuiltIn.Wait Until Keyword Succeeds 10s 1s OvsManager.Should Be Disconnected s1 ${ODL_SYSTEM_${index}_IP}
- \ ... update_data=${True}
+ FOR ${index} IN @{cluster_index_list}
+ BuiltIn.Wait Until Keyword Succeeds
+ ... 10s
+ ... 1s
+ ... OvsManager.Should Be Disconnected
+ ... s1
+ ... ${ODL_SYSTEM_${index}_IP}
+ ... update_data=${True}
+ END
Reconnect Mininet To Cluster
[Documentation] Reconnect mininet to cluster by removing Iptables drop rules that were used to disconnect
Check Groups In Operational DS After Mininet Reconnects
[Documentation] Check Groups in Operational DS.
- BuiltIn.Wait Until Keyword Succeeds 10s 1s ClusterOpenFlow.Check Number Of Groups On Member ${all_groups}
+ BuiltIn.Wait Until Keyword Succeeds
+ ... 10s
+ ... 1s
+ ... ClusterOpenFlow.Check Number Of Groups On Member
+ ... ${all_groups}
Check Flows In Switch After Mininet Reconnects
[Documentation] Check Flows in switch.
Check Entity Owner Status And Find Owner and Successor Before Owner Stop
[Documentation] Check Entity Owner Status and identify owner and successor for first switch s1.
- ${original_owner} ${original_successor_list} ClusterOpenFlow.Get OpenFlow Entity Owner Status For One Device openflow:1 1
+ ${original_owner} ${original_successor_list}= ClusterOpenFlow.Get OpenFlow Entity Owner Status For One Device
+ ... openflow:1
+ ... 1
${original_successor}= Collections.Get From List ${original_successor_list} 0
BuiltIn.Set Suite Variable ${original_owner}
BuiltIn.Set Suite Variable ${original_successor_list}
Check Switch Generates Slave Connection Before Owner Stop
[Documentation] Check switch s1 is connected to Slave.
${original_slave}= BuiltIn.Set Variable ${ODL_SYSTEM_${original_successor}_IP}
- : FOR ${switch} IN RANGE 1 ${switches+1}
- \ BuiltIn.Wait Until Keyword Succeeds 50s 1s OvsManager.Should Be Slave s1 ${original_slave}
- \ ... update_data=${True}
+ BuiltIn.Wait Until Keyword Succeeds
+ ... 50s
+ ... 1s
+ ... OvsManager.Should Be Slave
+ ... s1
+ ... ${original_slave}
+ ... update_data=${True}
Check Shards Status Before Owner Stop
[Documentation] Check Status for all shards in OpenFlow application.
Check Entity Owner Status And Find Owner and Successor After Stop
[Documentation] Check Entity Owner Status and identify owner and successor.
- ${new_owner} ${new_successor_list} ClusterOpenFlow.Get OpenFlow Entity Owner Status For One Device openflow:1 ${original_successor} ${new_cluster_list} after_stop=True
+ ${new_owner} ${new_successor_list}= ClusterOpenFlow.Get OpenFlow Entity Owner Status For One Device
+ ... openflow:1
+ ... ${original_successor}
+ ... ${new_cluster_list}
+ ... after_stop=True
BuiltIn.Set Suite Variable ${new_owner}
Check Stats Are Not Frozen After Owner Stop
Check Flows After Owner Stop In Operational DS
[Documentation] Check Flows in Operational DS in new owner.
- BuiltIn.Wait Until Keyword Succeeds 30s 1s ClusterOpenFlow.Check Number Of Flows On Member ${less_flows} ${new_owner}
+ BuiltIn.Wait Until Keyword Succeeds
+ ... 30s
+ ... 1s
+ ... ClusterOpenFlow.Check Number Of Flows On Member
+ ... ${less_flows}
+ ... ${new_owner}
Check Groups After Owner Stop In Operational DS
[Documentation] Check Groups in Operational DS in new owner.
- BuiltIn.Wait Until Keyword Succeeds 10s 1s ClusterOpenFlow.Check Number Of Groups On Member ${less_groups} ${new_owner}
+ BuiltIn.Wait Until Keyword Succeeds
+ ... 10s
+ ... 1s
+ ... ClusterOpenFlow.Check Number Of Groups On Member
+ ... ${less_groups}
+ ... ${new_owner}
Check Flows In Switch After Owner Stop
[Documentation] Check Flows in switch.
Check Entity Owner Status And Find Owner and Successor After Start Owner
[Documentation] Check Entity Owner Status and identify owner and successor for first switch s1.
- ${owner} ${successor_list} BuiltIn.Wait Until Keyword Succeeds 10s 1s ClusterOpenFlow.Get OpenFlow Entity Owner Status For One Device openflow:1
+ ${owner} ${successor_list}= BuiltIn.Wait Until Keyword Succeeds
+ ... 10s
+ ... 1s
+ ... ClusterOpenFlow.Get OpenFlow Entity Owner Status For One Device
+ ... openflow:1
... 1
Check Linear Topology After Owner Restart
Check Groups In Operational DS After Owner Restart
[Documentation] Check Groups in Operational DS.
- BuiltIn.Wait Until Keyword Succeeds 10s 1s ClusterOpenFlow.Check Number Of Groups On Member ${all_groups}
+ BuiltIn.Wait Until Keyword Succeeds
+ ... 10s
+ ... 1s
+ ... ClusterOpenFlow.Check Number Of Groups On Member
+ ... ${all_groups}
Check Flows In Switch After Owner Restart
[Documentation] Check Flows in switch.
[Documentation] Stop and Start cluster.
# Try to stop contoller, if stop does not work or takes too long, kill controller.
${status} ${result}= BuiltIn.Run Keyword And Ignore Error ClusterManagement.Stop_Members_From_List_Or_All
- BuiltIn.Run Keyword If '${status}' != 'PASS' ClusterManagement.Kill_Members_From_List_Or_All
+ IF '${status}' != 'PASS'
+ ClusterManagement.Kill_Members_From_List_Or_All
+ END
ClusterManagement.Start_Members_From_List_Or_All wait_for_sync=False
Check Linear Topology After Controller Restarts
Check Groups In Operational DS After Controller Restarts
[Documentation] Check Groups in Operational DS.
- BuiltIn.Wait Until Keyword Succeeds 10s 1s ClusterOpenFlow.Check Number Of Groups On Member ${all_groups}
+ BuiltIn.Wait Until Keyword Succeeds
+ ... 10s
+ ... 1s
+ ... ClusterOpenFlow.Check Number Of Groups On Member
+ ... ${all_groups}
Check Flows In Switch After Controller Restarts
[Documentation] Check Flows in switch.
[Documentation] Check no switches in topology.
BuiltIn.Wait Until Keyword Succeeds 5s 1s ClusterOpenFlow.Check No Switches On Member ${SWITCHES}
+
*** Keywords ***
Initialization Phase
[Documentation] Create controller session and set variables.
SetupUtils.Setup_Utils_For_Setup_And_Teardown
RequestsLibrary.Create Session session http://${ODL_SYSTEM_IP}:${RESTCONFPORT} auth=${AUTH}
- ${switches} Convert To Integer ${SWITCHES}
- ${iter} Convert To Integer ${ITER}
+ ${switches}= Convert To Integer ${SWITCHES}
+ ${iter}= Convert To Integer ${ITER}
${all_groups}= BuiltIn.Evaluate ${switches} * ${iter} * 2
${less_groups}= BuiltIn.Evaluate ${all_groups} - ${switches} * 2
# Stale flows/groups feature enabled in Boron onwards.
- ${less_groups}= CompareStream.Set Variable If At Least Boron ${less_groups} ${all_groups}
${all_flows}= BuiltIn.Evaluate ${switches} * ${iter+1}
${less_flows}= BuiltIn.Evaluate ${all_flows} - ${switches}
# Stale flows/groups feature enabled in Boron onwards.
- ${less_flows}= CompareStream.Set Variable If At Least Boron ${less_flows} ${all_flows}
BuiltIn.Set Suite Variable ${switches}
BuiltIn.Set Suite Variable ${iter}
BuiltIn.Set Suite Variable ${all_groups}
Final Phase
[Documentation] Delete all sessions.
- ${command} = BuiltIn.Set Variable sudo iptables -v -F
+ ${command}= BuiltIn.Set Variable sudo iptables -v -F
BuiltIn.Run Keyword And Ignore Error ClusterManagement.Run_Bash_Command_On_List_Or_All ${command}
- BuiltIn.Run Keyword And Ignore Error RequestsLibrary.Delete Request session ${CONFIG_NODES_API}
+ BuiltIn.Run Keyword And Ignore Error RequestsLibrary.Delete Request session ${RFC8040_NODES_API}
RequestsLibrary.Delete All Sessions
Add Groups And Flows On Member
- [Arguments] ${iter}=1 ${member_index}=1
[Documentation] Add ${ITER} groups type 1 & 2 and flows in every switch.
- ${session} = Resolve_Http_Session_For_Member member_index=${member_index}
- : FOR ${switch} IN RANGE 1 ${switches+1}
- \ TemplatedRequests.Post As Json Templated folder=${VAR_DIR}/add-group-1 mapping={"SWITCH":"${switch}"} session=${session} iterations=${iter}
- \ TemplatedRequests.Post As Json Templated folder=${VAR_DIR}/add-group-2 mapping={"SWITCH":"${switch}"} session=${session} iterations=${iter}
- \ TemplatedRequests.Post As Json Templated folder=${VAR_DIR}/add-flow mapping={"SWITCH":"${switch}"} session=${session} iterations=${iter}
+ [Arguments] ${iter}=1 ${member_index}=1
+ ${session}= Resolve_Http_Session_For_Member member_index=${member_index}
+ FOR ${switch} IN RANGE 1 ${switches+1}
+ &{mapping}= BuiltIn.Create_Dictionary NODE=openflow:${switch}
+ TemplatedRequests.Post As Json Templated
+ ... folder=${VAR_DIR}/add-group-1
+ ... mapping=${mapping}
+ ... session=${session}
+ ... iterations=${iter}
+ TemplatedRequests.Post As Json Templated
+ ... folder=${VAR_DIR}/add-group-2
+ ... mapping=${mapping}
+ ... session=${session}
+ ... iterations=${iter}
+ TemplatedRequests.Post As Json Templated
+ ... folder=${VAR_DIR}/add-flow
+ ... mapping=${mapping}
+ ... session=${session}
+ ... iterations=${iter}
+ END
Add Single Group And Flow On Member
- [Arguments] ${member_index}=1
[Documentation] Add 1 group 1&2 and 1 flow in every switch.
+ [Arguments] ${member_index}=1
Add Groups And Flows On Member 1 ${member_index}
Remove Single Group And Flow On Member
- [Arguments] ${member_index}=1
[Documentation] Remove 1 group 1&2 and 1 flow in every switch.
- ${session} = Resolve_Http_Session_For_Member member_index=${member_index}
- : FOR ${switch} IN RANGE 1 ${switches+1}
- \ RequestsLibrary.Delete Request ${session} ${CONFIG_NODES_API}/node/openflow:${switch}/table/0/flow/1
- \ RequestsLibrary.Delete Request ${session} ${CONFIG_NODES_API}/node/openflow:${switch}/group/1
- \ RequestsLibrary.Delete Request ${session} ${CONFIG_NODES_API}/node/openflow:${switch}/group/1000
+ [Arguments] ${member_index}=1
+ ${session}= Resolve_Http_Session_For_Member member_index=${member_index}
+ FOR ${switch} IN RANGE 1 ${switches+1}
+ RequestsLibrary.Delete Request
+ ... ${session}
+ ... ${RFC8040_NODES_API}/node=openflow%3A${switch}/flow-node-inventory:table=0/flow=1
+ RequestsLibrary.Delete Request
+ ... ${session}
+ ... ${RFC8040_NODES_API}/node=openflow%3A${switch}/flow-node-inventory:group=1
+ RequestsLibrary.Delete Request
+ ... ${session}
+ ... ${RFC8040_NODES_API}/node=openflow%3A${switch}/flow-node-inventory:group=1000
+ END
Check Flow Stats Are Not Frozen
- [Arguments] ${member_index}=1 ${period_in_seconds}=5
[Documentation] Verify flow stats are not frozen for flow 1 and switch 1.
- ${duration_1} = Extract Flow Duration ${member_index}
- ${duration_1} Builtin.Convert To Integer ${duration_1}
+ [Arguments] ${member_index}=1 ${period_in_seconds}=5
+ ${duration_1}= Extract Flow Duration ${member_index}
+ ${duration_1}= Builtin.Convert To Integer ${duration_1}
BuiltIn.Sleep ${period_in_seconds}
- ${duration_2} = Extract Flow Duration ${member_index}
- ${duration_2} Builtin.Convert To Integer ${duration_2}
+ ${duration_2}= Extract Flow Duration ${member_index}
+ ${duration_2}= Builtin.Convert To Integer ${duration_2}
Should Not Be Equal As Integers ${duration_1} ${duration_2}
Extract Flow Duration
- [Arguments] ${member_index}
[Documentation] Extract duration for flow 1 in switch 1.
- ${session} = Resolve_Http_Session_For_Member member_index=${member_index}
- ${resp} RequestsLibrary.Get Request ${session} ${OPERATIONAL_NODES_API}/node/openflow:1/table/0/flow/1 headers=${headers}
+ [Arguments] ${member_index}
+ ${session}= Resolve_Http_Session_For_Member member_index=${member_index}
+ ${resp}= RequestsLibrary.Get Request
+ ... ${session}
+ ... ${RFC8040_NODES_API}/node=openflow%3A1/flow-node-inventory:table=0/flow=1?content=nonconfig
+ ... headers=${headers}
Log ${resp.content}
- ${json_resp} = RequestsLibrary.To_Json ${resp.content}
- ${flow_list} = Collections.Get_From_Dictionary ${json_resp} flow-node-inventory:flow
- ${flow_stats} = Collections.Get_From_Dictionary @{flow_list}[0] opendaylight-flow-statistics:flow-statistics
- ${duration} = Collections.Get_From_Dictionary &{flow_stats}[duration] second
- Return From Keyword ${duration}
+ ${json_resp}= RequestsLibrary.To_Json ${resp.content}
+ ${flow_list}= Collections.Get_From_Dictionary ${json_resp} flow-node-inventory:flow
+ ${flow_stats}= Collections.Get_From_Dictionary
+ ... ${flow_list}[0]
+ ... opendaylight-flow-statistics:flow-statistics
+ ${duration}= Collections.Get_From_Dictionary ${flow_stats}[duration] second
+ RETURN ${duration}