*** Settings ***
-Documentation Basic tests for TELEMETRY information configuration and verification.
-... Copyright (c) 2018-2019 Zte, Inc. All rights reserved.
-... Test suite performs basic TELEMETRY information configuration and verification test cases for sensor, destination, and subscription as follows:
-... Test Case 1: Configure sensor with add and delete operation
-... Expected result: The Configure result with corresponding operation verified as expected
-... Test Case 2: Configure destination with add and delete operation
-... Expected result: The Configure result with corresponding operation verified as expected
-... Test Case 3: Configure subscription with add and query operation
-... Expected result: The Configure result with corresponding operation verified as expected
-... Test Case 4: Delete all resource
-... Expected result: The Configure result with corresponding operation verified as expected
-Suite Setup RequestsLibrary.Create_Session session http://${ODL_SYSTEM_IP}:${RESTCONFPORT} auth=${AUTH} headers=${HEADERS_YANG_JSON}
-Resource ../../../libraries/TemplatedRequests.robot
-Resource ../../../variables/Variables.robot
-Library RequestsLibrary
+Documentation Basic tests for TELEMETRY information configuration and verification.
+... Copyright (c) 2018-2019 Zte, Inc. All rights reserved.
+... Test suite performs basic TELEMETRY information configuration and verification test cases for sensor, destination, and subscription as follows:
+... Test Case 1: Configure sensor with add and delete operation
+... Expected result: The Configure result with corresponding operation verified as expected
+... Test Case 2: Configure destination with add and delete operation
+... Expected result: The Configure result with corresponding operation verified as expected
+... Test Case 3: Configure subscription with add and query operation
+... Expected result: The Configure result with corresponding operation verified as expected
+... Test Case 4: Delete all resource
+... Expected result: The Configure result with corresponding operation verified as expected
+
+Resource ../../../libraries/TemplatedRequests.robot
+Resource ../../../variables/Variables.robot
+Library RequestsLibrary
+
+Suite Setup RequestsLibrary.Create_Session session http://${ODL_SYSTEM_IP}:${RESTCONFPORT} auth=${AUTH} headers=${HEADERS_YANG_JSON}
+
*** Variables ***
-@{SENSOR_ID_LIST} sensor1 sensor2
-@{PATH_LIST} path1 path2
-@{FILTER_LIST} filter1 filter2
-${TELEMETRY_VAR_FOLDER} ${CURDIR}/../../../variables/telemetry
-@{DESTINATION_ID_LIST} destination1 destination2
-@{ADDRESS_LIST} 10.42.89.15 10.96.33.30
-${PORT} 50051
-@{NODE_ID_LIST} node1 node2
-@{SUBSCRIPTION_ID_LIST} subscription1 subscription2
-@{PROTOCOL_TYPE_LIST} STREAM_SSH STREAM_GRPC STREAM_JSON_RPC STREAM_THRIFT_RPC STREAM_WEBSOCKET_RPC
-@{ENCODING_TYPE_LIST} ENC_XML ENC_JSON_IETF ENC_PROTO3
-${LOCAL_SOURCE_ADDRESS} 127.0.0.1
-@{QOS_MARKING_LIST} 0 1 2 3 4 5
-@{SAMPLE_INTERVAL_LIST} 100 200 300
-@{HEARTBEAT_INTERVAL_LIST} 30 60
+@{SENSOR_ID_LIST} sensor1 sensor2
+@{PATH_LIST} path1 path2
+@{FILTER_LIST} filter1 filter2
+${TELEMETRY_VAR_FOLDER} ${CURDIR}/../../../variables/telemetry
+@{DESTINATION_ID_LIST} destination1 destination2
+@{ADDRESS_LIST} 10.42.89.15 10.96.33.30
+${PORT} 50051
+@{NODE_ID_LIST} node1 node2
+@{SUBSCRIPTION_ID_LIST} subscription1 subscription2
+@{PROTOCOL_TYPE_LIST}
+... STREAM_SSH
+... STREAM_GRPC
+... STREAM_JSON_RPC
+... STREAM_THRIFT_RPC
+... STREAM_WEBSOCKET_RPC
+@{ENCODING_TYPE_LIST} ENC_XML ENC_JSON_IETF ENC_PROTO3
+${LOCAL_SOURCE_ADDRESS} 127.0.0.1
+@{QOS_MARKING_LIST} 0 1 2 3 4 5
+@{SAMPLE_INTERVAL_LIST} 100 200 300
+@{HEARTBEAT_INTERVAL_LIST} 30 60
+
*** Test Cases ***
TC1_Configure Sensor
[Documentation] Configure two sensors with sensor id list ${SENSOR_ID_LIST}, sensor path list ${PATH_LIST}, and sensor exclude filter list ${FILTER_LIST}.
- ${mapping} = Create Dictionary SENSOR1=${SENSOR_ID_LIST[0]} SENSOR2=${SENSOR_ID_LIST[1]} PATH1=${PATH_LIST[0]} PATH2=${PATH_LIST[1]} FILTER1=${FILTER_LIST[0]}
+ ${mapping} = Create Dictionary
+ ... SENSOR1=${SENSOR_ID_LIST[0]}
+ ... SENSOR2=${SENSOR_ID_LIST[1]}
+ ... PATH1=${PATH_LIST[0]}
+ ... PATH2=${PATH_LIST[1]}
+ ... FILTER1=${FILTER_LIST[0]}
... FILTER2=${FILTER_LIST[1]}
- ${resp} = TemplatedRequests.Post_As_Json_Templated ${TELEMETRY_VAR_FOLDER}/telemetry_sensor_configuration/configure_sensor ${mapping} session
+ ${resp} = TemplatedRequests.Post_As_Json_Templated
+ ... ${TELEMETRY_VAR_FOLDER}/telemetry_sensor_configuration/configure_sensor
+ ... ${mapping}
+ ... session
Verify_Response_As_Json_Templated ${resp} ${TELEMETRY_VAR_FOLDER}/response success_response
TC1_Delete Sensor
[Documentation] Delete the second sensor created in the test case TC1_Configure Sensor.
${mapping} = Create Dictionary SENSOR=${SENSOR_ID_LIST[1]}
- ${resp} = TemplatedRequests.Post_As_Json_Templated ${TELEMETRY_VAR_FOLDER}/telemetry_sensor_configuration/delete_sensor ${mapping} session
+ ${resp} = TemplatedRequests.Post_As_Json_Templated
+ ... ${TELEMETRY_VAR_FOLDER}/telemetry_sensor_configuration/delete_sensor
+ ... ${mapping}
+ ... session
Verify_Response_As_Json_Templated ${resp} ${TELEMETRY_VAR_FOLDER}/response success_response
TC1_Query Sensor
[Documentation] Query the sensor created in the datastore.
- ${resp} = TemplatedRequests.Post_As_Json_Templated ${TELEMETRY_VAR_FOLDER}/telemetry_sensor_configuration/query_sensor {} session True
+ ${resp} = TemplatedRequests.Post_As_Json_Templated
+ ... ${TELEMETRY_VAR_FOLDER}/telemetry_sensor_configuration/query_sensor
+ ... {}
+ ... session
+ ... True
TC2_Configure Destination
[Documentation] Configure two destinations with destination id list ${DESTINATION_ID_LIST}, address list ${ADDRESS_LIST} and port ${PORT}.
- ${mapping} = Create Dictionary DESTINATION1=${DESTINATION_ID_LIST[0]} DESTINATION2=${DESTINATION_ID_LIST[1]} ADDRESS1=${ADDRESS_LIST[0]} ADDRESS2=${ADDRESS_LIST[1]} PORT=${PORT}
- ${resp} = TemplatedRequests.Post_As_Json_Templated ${TELEMETRY_VAR_FOLDER}/telemetry_destination_configuration/configure_destination ${mapping} session
+ ${mapping} = Create Dictionary
+ ... DESTINATION1=${DESTINATION_ID_LIST[0]}
+ ... DESTINATION2=${DESTINATION_ID_LIST[1]}
+ ... ADDRESS1=${ADDRESS_LIST[0]}
+ ... ADDRESS2=${ADDRESS_LIST[1]}
+ ... PORT=${PORT}
+ ${resp} = TemplatedRequests.Post_As_Json_Templated
+ ... ${TELEMETRY_VAR_FOLDER}/telemetry_destination_configuration/configure_destination
+ ... ${mapping}
+ ... session
Verify_Response_As_Json_Templated ${resp} ${TELEMETRY_VAR_FOLDER}/response success_response
TC2_Delete Destination
[Documentation] Delete the second destination created in the test case TC2_Configure Destination.
${mapping} = Create Dictionary DESTINATION=${DESTINATION_ID_LIST[1]}
- ${resp} = TemplatedRequests.Post_As_Json_Templated ${TELEMETRY_VAR_FOLDER}/telemetry_destination_configuration/delete_destination ${mapping} session
+ ${resp} = TemplatedRequests.Post_As_Json_Templated
+ ... ${TELEMETRY_VAR_FOLDER}/telemetry_destination_configuration/delete_destination
+ ... ${mapping}
+ ... session
Verify_Response_As_Json_Templated ${resp} ${TELEMETRY_VAR_FOLDER}/response success_response
TC2_Query Destination
[Documentation] Query the destination created in the datastore.
- ${resp} = TemplatedRequests.Post_As_Json_Templated ${TELEMETRY_VAR_FOLDER}/telemetry_destination_configuration/query_destination {} session True
+ ${resp} = TemplatedRequests.Post_As_Json_Templated
+ ... ${TELEMETRY_VAR_FOLDER}/telemetry_destination_configuration/query_destination
+ ... {}
+ ... session
+ ... True
TC3_Configure Subscription
[Documentation] Configure one node with two subscriptions with subscription id list ${SUBSCRIPTION_ID_LIST}, a series of parameters, and sensor destination configured in front.
- ${mapping} = Create Dictionary NODE1=${NODE_ID_LIST[0]} SUBSCRIPTION1=${SUBSCRIPTION_ID_LIST[0]} PROTOCOLTYPE1=${PROTOCOL_TYPE_LIST[1]} ENCODINGTYPE1=${ENCODING_TYPE_LIST[2]} LOCALSOURCEADDRESS=${LOCAL_SOURCE_ADDRESS}
- ... QOS1=${QOS_MARKING_LIST[3]} SENSOR1=${SENSOR_ID_LIST[0]} SAMPLE1=${SAMPLE_INTERVAL_LIST[0]} HEARTBEAT1=${HEARTBEAT_INTERVAL_LIST[0]} DESTINATION1=${DESTINATION_ID_LIST[0]} SUBSCRIPTION2=${SUBSCRIPTION_ID_LIST[1]}
- ... PROTOCOLTYPE2=${PROTOCOL_TYPE_LIST[0]} ENCODINGTYPE2=${ENCODING_TYPE_LIST[0]} QOS2=${QOS_MARKING_LIST[5]} SAMPLE2=${SAMPLE_INTERVAL_LIST[1]} HEARTBEAT2=${HEARTBEAT_INTERVAL_LIST[1]}
- ${resp} = TemplatedRequests.Post_As_Json_Templated ${TELEMETRY_VAR_FOLDER}/telemetry_subscription_configuration/configure_subscription ${mapping} session
+ ${mapping} = Create Dictionary
+ ... NODE1=${NODE_ID_LIST[0]}
+ ... SUBSCRIPTION1=${SUBSCRIPTION_ID_LIST[0]}
+ ... PROTOCOLTYPE1=${PROTOCOL_TYPE_LIST[1]}
+ ... ENCODINGTYPE1=${ENCODING_TYPE_LIST[2]}
+ ... LOCALSOURCEADDRESS=${LOCAL_SOURCE_ADDRESS}
+ ... QOS1=${QOS_MARKING_LIST[3]}
+ ... SENSOR1=${SENSOR_ID_LIST[0]}
+ ... SAMPLE1=${SAMPLE_INTERVAL_LIST[0]}
+ ... HEARTBEAT1=${HEARTBEAT_INTERVAL_LIST[0]}
+ ... DESTINATION1=${DESTINATION_ID_LIST[0]}
+ ... SUBSCRIPTION2=${SUBSCRIPTION_ID_LIST[1]}
+ ... PROTOCOLTYPE2=${PROTOCOL_TYPE_LIST[0]}
+ ... ENCODINGTYPE2=${ENCODING_TYPE_LIST[0]}
+ ... QOS2=${QOS_MARKING_LIST[5]}
+ ... SAMPLE2=${SAMPLE_INTERVAL_LIST[1]}
+ ... HEARTBEAT2=${HEARTBEAT_INTERVAL_LIST[1]}
+ ${resp} = TemplatedRequests.Post_As_Json_Templated
+ ... ${TELEMETRY_VAR_FOLDER}/telemetry_subscription_configuration/configure_subscription
+ ... ${mapping}
+ ... session
Verify_Response_As_Json_Templated ${resp} ${TELEMETRY_VAR_FOLDER}/response success_response
TC3_Query Subscription
[Documentation] Query the subscription created in the datastore.
- ${resp} = TemplatedRequests.Post_As_Json_Templated ${TELEMETRY_VAR_FOLDER}/telemetry_subscription_configuration/query_subscription {} session True
+ ${resp} = TemplatedRequests.Post_As_Json_Templated
+ ... ${TELEMETRY_VAR_FOLDER}/telemetry_subscription_configuration/query_subscription
+ ... {}
+ ... session
+ ... True
TC4_Delete Resource
[Documentation] Delete all sensor, destination and subscription.
${mapping1} = Create Dictionary DESTINATION=${DESTINATION_ID_LIST[0]}
- ${resp1} = TemplatedRequests.Post_As_Json_Templated ${TELEMETRY_VAR_FOLDER}/telemetry_destination_configuration/delete_destination ${mapping1} session
+ ${resp1} = TemplatedRequests.Post_As_Json_Templated
+ ... ${TELEMETRY_VAR_FOLDER}/telemetry_destination_configuration/delete_destination
+ ... ${mapping1}
+ ... session
${mapping2} = Create Dictionary SENSOR=${SENSOR_ID_LIST[0]}
- ${resp2} = TemplatedRequests.Post_As_Json_Templated ${TELEMETRY_VAR_FOLDER}/telemetry_sensor_configuration/delete_sensor ${mapping2} session
+ ${resp2} = TemplatedRequests.Post_As_Json_Templated
+ ... ${TELEMETRY_VAR_FOLDER}/telemetry_sensor_configuration/delete_sensor
+ ... ${mapping2}
+ ... session
*** Settings ***
-Documentation For every node, set Karaf log level to ${ALTERNATIVE_KARAF_LOG_LEVEL}.
+Documentation For every node, set Karaf log level to ${ALTERNATIVE_KARAF_LOG_LEVEL}.
...
-... Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved.
+... Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved.
...
-... This program and the accompanying materials are made available under the
-... terms of the Eclipse Public License v1.0 which accompanies this distribution,
-... and is available at http://www.eclipse.org/legal/epl-v10.html
+... This program and the accompanying materials are made available under the
+... terms of the Eclipse Public License v1.0 which accompanies this distribution,
+... and is available at http://www.eclipse.org/legal/epl-v10.html
...
...
-... This suite is useful for testing, run it after readiness.
-... Do not forget to specify other variables if suites afterwards manipulate log level.
-... Use revert_log_levels.robot to restore log levels to the default value.
-Suite Setup ClusterManagement.ClusterManagement_Setup
-Default Tags clustering
-Resource ${CURDIR}/../../libraries/ClusterManagement.robot
+... This suite is useful for testing, run it after readiness.
+... Do not forget to specify other variables if suites afterwards manipulate log level.
+... Use revert_log_levels.robot to restore log levels to the default value.
+
+Resource ${CURDIR}/../../libraries/ClusterManagement.robot
+
+Suite Setup ClusterManagement.ClusterManagement_Setup
+
+Default Tags clustering
+
*** Variables ***
-${ALTERNATIVE_KARAF_LOG_LEVEL} INFO
+${ALTERNATIVE_KARAF_LOG_LEVEL} INFO
+
*** Test Cases ***
Set_Levels
*** Settings ***
-Documentation Kill nodes, delete all data created since boot, start nodes, wait for sync.
+Documentation Kill nodes, delete all data created since boot, start nodes, wait for sync.
...
-... Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved.
+... Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved.
...
-... This program and the accompanying materials are made available under the
-... terms of the Eclipse Public License v1.0 which accompanies this distribution,
-... and is available at http://www.eclipse.org/legal/epl-v10.html
+... This program and the accompanying materials are made available under the
+... terms of the Eclipse Public License v1.0 which accompanies this distribution,
+... and is available at http://www.eclipse.org/legal/epl-v10.html
...
...
-... This suite is useful for undoing feature installation, Leader movement
-... and for recovering from bably broken state.
-... The intent is to provide speed compared to isolated job runs.
+... This suite is useful for undoing feature installation, Leader movement
+... and for recovering from bably broken state.
+... The intent is to provide speed compared to isolated job runs.
...
-... FIXME: Import improvements from suites manipulating tell-based protocol setting.
-Suite Setup ClusterManagement.ClusterManagement_Setup
-Default Tags clustering critical
-Library DateTime
-Library SSHLibrary
-Resource ${CURDIR}/../../libraries/ClusterManagement.robot
+... FIXME: Import improvements from suites manipulating tell-based protocol setting.
+
+Library DateTime
+Library SSHLibrary
+Resource ${CURDIR}/../../libraries/ClusterManagement.robot
+
+Suite Setup ClusterManagement.ClusterManagement_Setup
+
+Default Tags clustering critical
+
*** Test Cases ***
Kill_All_And_Get_Logs
[Documentation] Kill every node, download karaf logs.
ClusterManagement.Kill_Members_From_List_Or_All
- ClusterManagement.Safe_With_Ssh_To_List_Or_All_Run_Keyword member_index_list=${EMPTY} keyword_name=Download_Karaf_Log
+ ClusterManagement.Safe_With_Ssh_To_List_Or_All_Run_Keyword
+ ... member_index_list=${EMPTY}
+ ... keyword_name=Download_Karaf_Log
Clean_Start_All_And_Sync
[Documentation] Remove various data folders, including ${KARAF_HOME}/data/ on every node.
ClusterManagement.Start_Members_From_List_Or_All
BuiltIn.Comment Basic synch performed, but waits for specific functionality may still be needed.
+
*** Keywords ***
Download_Karaf_Log
${timestamp} = DateTime.Get_Current_Date time_zone=UTC result_format=%Y%m%d%H%M%S%f
*** Settings ***
-Documentation Not a test, it just logs versions of installed Python modules.
-... Useful when library documentation mentions version-specific behavior.
-Library OperatingSystem
-Library SSHLibrary
-Resource ${CURDIR}/../../libraries/SSHKeywords.robot
+Documentation Not a test, it just logs versions of installed Python modules.
+... Useful when library documentation mentions version-specific behavior.
+
+Library OperatingSystem
+Library SSHLibrary
+Resource ${CURDIR}/../../libraries/SSHKeywords.robot
+
*** Test Cases ***
Freeze
*** Settings ***
-Documentation Unit test suite to ScalarClosures library.
+Documentation Unit test suite to ScalarClosures library.
...
-... Copyright (c) 2015 Cisco Systems, Inc. and others. All rights reserved.
+... Copyright (c) 2015 Cisco Systems, Inc. and others. All rights reserved.
...
-... This program and the accompanying materials are made available under the
-... terms of the Eclipse Public License v1.0 which accompanies this distribution,
-... and is available at http://www.eclipse.org/legal/epl-v10.html
+... This program and the accompanying materials are made available under the
+... terms of the Eclipse Public License v1.0 which accompanies this distribution,
+... and is available at http://www.eclipse.org/legal/epl-v10.html
...
...
-... TODO: Improve test converage.
-Suite Setup SCT_Setup
-Resource ${CURDIR}/../../../libraries/ScalarClosures.robot
+... TODO: Improve test converage.
+
+Resource ${CURDIR}/../../../libraries/ScalarClosures.robot
+
+Suite Setup SCT_Setup
+
*** Test Cases ***
Identity_Closure_Defined
One_Arg_No_Kwargs_Execution_Test
[Documentation] The identity closure is run with rerplaced argument, the value is visible.
- ${actual} = ScalarClosures.Run_Closure_After_Replacing_First_Argument ${ScalarClosures__identity} first_value
+ ${actual} = ScalarClosures.Run_Closure_After_Replacing_First_Argument
+ ... ${ScalarClosures__identity}
+ ... first_value
BuiltIn.Should_Be_Equal ${actual} first_value
Two_Args_No_Kwargs_Execution_Test
[Documentation] Closure which puts two placeholders into list is created, run with substitution shows new values in list.
- ${closure} = ScalarClosures.Closure_From_Keyword_And_Arguments BuiltIn.Set_Variable first_placeholder second_placeholder
- ${actual} = ScalarClosures.Run_Closure_After_Replacing_First_Two_Arguments ${closure} first_value second_value
+ ${closure} = ScalarClosures.Closure_From_Keyword_And_Arguments
+ ... BuiltIn.Set_Variable
+ ... first_placeholder
+ ... second_placeholder
+ ${actual} = ScalarClosures.Run_Closure_After_Replacing_First_Two_Arguments
+ ... ${closure}
+ ... first_value
+ ... second_value
${expected} = BuiltIn.Set_Variable first_value second_value
BuiltIn.Should_Be_Equal ${actual} ${expected}
# As stated in Documentation of ScalarClosures in Current limitation,
# BuiltIn.Create_Directory will get empty list in @{args}, which will trigger deprecation warning.
# TODO: Investigate whether it is a genuine bug in Robot.
- ${outer_closure} = ScalarClosures.Closure_From_Keyword_And_Arguments ScalarClosures.Run_Closure_As_Is ${inner_closure}
+ ${outer_closure} = ScalarClosures.Closure_From_Keyword_And_Arguments
+ ... ScalarClosures.Run_Closure_As_Is
+ ... ${inner_closure}
${actual} = ScalarClosures.Run_Closure_As_Is ${outer_closure}
${expected} = BuiltIn.Create_Dictionary foo=bar
BuiltIn.Should_Be_Equal ${actual} ${expected}
+
*** Keywords ***
SCT_Setup
[Documentation] Call ScalarClosures setup.
*** Settings ***
-Documentation Unit test suite to WaitUtils library.
+Documentation Unit test suite to WaitUtils library.
...
-... Copyright (c) 2015 Cisco Systems, Inc. and others. All rights reserved.
+... Copyright (c) 2015 Cisco Systems, Inc. and others. All rights reserved.
...
-... This program and the accompanying materials are made available under the
-... terms of the Eclipse Public License v1.0 which accompanies this distribution,
-... and is available at http://www.eclipse.org/legal/epl-v10.html
+... This program and the accompanying materials are made available under the
+... terms of the Eclipse Public License v1.0 which accompanies this distribution,
+... and is available at http://www.eclipse.org/legal/epl-v10.html
...
...
-... TODO: Include more negative tests for WFGASSVCS and WFGEOSSVCS.
-... TODO: Current time values may be too brittle.
-Suite Setup WUT_Setup
-Library Collections
-Resource ${CURDIR}/../../../libraries/ScalarClosures.robot
-Resource ${CURDIR}/../../../libraries/WaitUtils.robot
+... TODO: Include more negative tests for WFGASSVCS and WFGEOSSVCS.
+... TODO: Current time values may be too brittle.
+
+Library Collections
+Resource ${CURDIR}/../../../libraries/ScalarClosures.robot
+Resource ${CURDIR}/../../../libraries/WaitUtils.robot
+
+Suite Setup WUT_Setup
+
*** Variables ***
-${suite_scenario} ${EMPTY} # Used to store state for fake stateless getter.
-@{stability_scenario} -1 -1 0 0 1 2 2
+${suite_scenario} ${EMPTY} # Used to store state for fake stateless getter.
+@{stability_scenario} -1 -1 0 0 1 2 2
+
*** Test Cases ***
SlACHTSC_Happy
[Documentation] Assertor always passes, we see its value returned.
- ${result} = WaitUtils.Stateless_Assert_Closure_Has_To_Succeed_Consecutively timeout=1.4s period=0.5s count=3 assertor=${ScalarClosures__identity}
+ ${result} = WaitUtils.Stateless_Assert_Closure_Has_To_Succeed_Consecutively
+ ... timeout=1.4s
+ ... period=0.5s
+ ... count=3
+ ... assertor=${ScalarClosures__identity}
BuiltIn.Should_Be_Equal ${result} placeholder
SlACHTSC_Too_Many_Sleeps
[Documentation] There are too many sleeps to meet deadline.
# TODO: Do we want the test to be this sensitive to failure message?
- BuiltIn.Run_Keyword_And_Expect_Error Not possible to succeed within the deadline. Last result: No result yet. WaitUtils.Stateless_Assert_Closure_Has_To_Succeed_Consecutively timeout=1.4s period=0.5s count=4 assertor=${ScalarClosures__identity}
+ BuiltIn.Run_Keyword_And_Expect_Error
+ ... Not possible to succeed within the deadline. Last result: No result yet.
+ ... WaitUtils.Stateless_Assert_Closure_Has_To_Succeed_Consecutively
+ ... timeout=1.4s
+ ... period=0.5s
+ ... count=4
+ ... assertor=${ScalarClosures__identity}
SlACHTSC_Slow_Assertor
[Documentation] Assertor takes additional time, deadline is encountered.
${assertor} = ScalarClosures.Closure_From_Keyword_And_Arguments BuiltIn.Sleep 0.3s
- BuiltIn.Run_Keyword_And_Expect_Error Not possible to succeed within the deadline. Last result: None WaitUtils.Stateless_Assert_Closure_Has_To_Succeed_Consecutively timeout=1.4s period=0.5s count=3 assertor=${assertor}
+ BuiltIn.Run_Keyword_And_Expect_Error
+ ... Not possible to succeed within the deadline. Last result: None
+ ... WaitUtils.Stateless_Assert_Closure_Has_To_Succeed_Consecutively
+ ... timeout=1.4s
+ ... period=0.5s
+ ... count=3
+ ... assertor=${assertor}
SfACHTSC_Happy
[Documentation] Assertor succeeds just the right amount of counts.
- ${result} = WaitUtils.Stateful_Assert_Closure_Has_To_Succeed_Consecutively timeout=1.4s period=0.5s count=3 assertor=${countdown_quick} initial_state=3
+ ${result} = WaitUtils.Stateful_Assert_Closure_Has_To_Succeed_Consecutively
+ ... timeout=1.4s
+ ... period=0.5s
+ ... count=3
+ ... assertor=${countdown_quick}
+ ... initial_state=3
BuiltIn.Should_Be_Equal ${result} still_alive
SfACHTSC_Too_Many_Sleeps
[Documentation] There are too many sleeps to meet deadline.
- BuiltIn.Run_Keyword_And_Expect_Error Not possible to succeed within the deadline. Last result: No result yet. WaitUtils.Stateful_Assert_Closure_Has_To_Succeed_Consecutively timeout=1.4s period=0.5s count=4 assertor=${countdown_quick}
+ BuiltIn.Run_Keyword_And_Expect_Error
+ ... Not possible to succeed within the deadline. Last result: No result yet.
+ ... WaitUtils.Stateful_Assert_Closure_Has_To_Succeed_Consecutively
+ ... timeout=1.4s
+ ... period=0.5s
+ ... count=4
+ ... assertor=${countdown_quick}
... initial_state=4
SfACHTSC_Slow_Assertor
[Documentation] Assertor takes additional time, deadline is encountered.
- BuiltIn.Run_Keyword_And_Expect_Error Not possible to succeed within the deadline. Last result: still_alive WaitUtils.Stateful_Assert_Closure_Has_To_Succeed_Consecutively timeout=1.4s period=0.5s count=3 assertor=${countdown_slow}
+ BuiltIn.Run_Keyword_And_Expect_Error
+ ... Not possible to succeed within the deadline. Last result: still_alive
+ ... WaitUtils.Stateful_Assert_Closure_Has_To_Succeed_Consecutively
+ ... timeout=1.4s
+ ... period=0.5s
+ ... count=3
+ ... assertor=${countdown_slow}
... initial_state=3
SfACHTSC_Too_Few_Counts
[Documentation] Assertor fails at the last try.
- BuiltIn.Run_Keyword_And_Expect_Error Count is down. WaitUtils.Stateful_Assert_Closure_Has_To_Succeed_Consecutively timeout=1.4s period=0.5s count=3 assertor=${countdown_quick}
+ BuiltIn.Run_Keyword_And_Expect_Error
+ ... Count is down.
+ ... WaitUtils.Stateful_Assert_Closure_Has_To_Succeed_Consecutively
+ ... timeout=1.4s
+ ... period=0.5s
+ ... count=3
+ ... assertor=${countdown_quick}
... initial_state=2
Fake_Getter_Fails_Exactly
BuiltIn.Should_Be_Equal ${data} 0
${data} = ScalarClosures.Run_Closure_As_Is ${getter}
BuiltIn.Should_Be_Equal ${data} 0
- BuiltIn.Run_Keyword_And_Expect_Error IndexError: Given index 0 is out of the range 0--1. ScalarClosures.Run_Closure_As_Is ${getter}
+ BuiltIn.Run_Keyword_And_Expect_Error
+ ... IndexError: Given index 0 is out of the range 0--1.
+ ... ScalarClosures.Run_Closure_As_Is
+ ... ${getter}
Fake_Getter_Fails_On_Negative
[Documentation] Tests that fake getter created in this suite succeed exactly the right amount of times.
${getter} = Create_Scenario_Getter_Closure ${value_list} delay=0s fail_on_negative=True
${date_now} = DateTime.Get_Current_Date
${date_deadline} = DateTime.Add_Time_To_Date ${date_now} 1.35
- ${state} ${status} ${result} = Getter_And_Safe_Stateful_Validator_Have_To_Succeed_Consecutively_By_Deadline date_deadline=${date_deadline} period_in_seconds=0.4 count=3
- ... getter=${getter} safe_validator=${standard_validator} initial_state=1
+ ${state}
+ ... ${status}
+ ... ${result} =
+ ... Getter_And_Safe_Stateful_Validator_Have_To_Succeed_Consecutively_By_Deadline
+ ... date_deadline=${date_deadline}
+ ... period_in_seconds=0.4
+ ... count=3
+ ... getter=${getter}
+ ... safe_validator=${standard_validator}
+ ... initial_state=1
BuiltIn.Should_Be_Equal ${state} 1
BuiltIn.Should_Be_Equal ${status} PASS
BuiltIn.Should_Be_Equal ${result} Validated stable: 1
${getter} = Create_Scenario_Getter_Closure ${value_list} delay=0s fail_on_negative=True
${date_now} = DateTime.Get_Current_Date
${date_deadline} = DateTime.Add_Time_To_Date ${date_now} 1.05
- ${state} ${status} ${result} = Getter_And_Safe_Stateful_Validator_Have_To_Succeed_Consecutively_By_Deadline date_deadline=${date_deadline} period_in_seconds=0.55 count=3
- ... getter=${getter} safe_validator=${standard_validator} initial_state=1
+ ${state}
+ ... ${status}
+ ... ${result} =
+ ... Getter_And_Safe_Stateful_Validator_Have_To_Succeed_Consecutively_By_Deadline
+ ... date_deadline=${date_deadline}
+ ... period_in_seconds=0.55
+ ... count=3
+ ... getter=${getter}
+ ... safe_validator=${standard_validator}
+ ... initial_state=1
BuiltIn.Should_Be_Equal ${state} 1
BuiltIn.Should_Be_Equal ${status} FAIL
BuiltIn.Should_Be_Equal ${result} Not possible to succeed within the deadline. Last result: No result yet.
${getter} = Create_Scenario_Getter_Closure ${value_list} delay=0.21s fail_on_negative=True
${date_now} = DateTime.Get_Current_Date
${date_deadline} = DateTime.Add_Time_To_Date ${date_now} 1.2
- ${state} ${status} ${result} = Getter_And_Safe_Stateful_Validator_Have_To_Succeed_Consecutively_By_Deadline date_deadline=${date_deadline} period_in_seconds=0.4 count=3
- ... getter=${getter} safe_validator=${standard_validator} initial_state=1
+ ${state}
+ ... ${status}
+ ... ${result} =
+ ... Getter_And_Safe_Stateful_Validator_Have_To_Succeed_Consecutively_By_Deadline
+ ... date_deadline=${date_deadline}
+ ... period_in_seconds=0.4
+ ... count=3
+ ... getter=${getter}
+ ... safe_validator=${standard_validator}
+ ... initial_state=1
BuiltIn.Should_Be_Equal ${state} 1
BuiltIn.Should_Be_Equal ${status} FAIL
- BuiltIn.Should_Be_Equal ${result} Not possible to succeed within the deadline. Last result: Validated stable: 1
+ BuiltIn.Should_Be_Equal
+ ... ${result}
+ ... Not possible to succeed within the deadline. Last result: Validated stable: 1
GASSVHTSCBD_Data_Become_Invalid
[Documentation] Validator fails at the last try.
${getter} = Create_Scenario_Getter_Closure ${value_list} delay=0s fail_on_negative=True
${date_now} = DateTime.Get_Current_Date
${date_deadline} = DateTime.Add_Time_To_Date ${date_now} 1.35
- ${state} ${status} ${result} = Getter_And_Safe_Stateful_Validator_Have_To_Succeed_Consecutively_By_Deadline date_deadline=${date_deadline} period_in_seconds=0.4 count=3
- ... getter=${getter} safe_validator=${standard_validator} initial_state=1
+ ${state}
+ ... ${status}
+ ... ${result} =
+ ... Getter_And_Safe_Stateful_Validator_Have_To_Succeed_Consecutively_By_Deadline
+ ... date_deadline=${date_deadline}
+ ... period_in_seconds=0.4
+ ... count=3
+ ... getter=${getter}
+ ... safe_validator=${standard_validator}
+ ... initial_state=1
BuiltIn.Should_Be_Equal ${state} 2
BuiltIn.Should_Be_Equal ${status} FAIL
BuiltIn.Should_Be_Equal ${result} Validator failed: Data value has changed.
${getter} = Create_Scenario_Getter_Closure ${value_list} delay=0s fail_on_negative=True
${date_now} = DateTime.Get_Current_Date
${date_deadline} = DateTime.Add_Time_To_Date ${date_now} 1.35
- ${state} ${status} ${result} = Getter_And_Safe_Stateful_Validator_Have_To_Succeed_Consecutively_By_Deadline date_deadline=${date_deadline} period_in_seconds=0.4 count=3
- ... getter=${getter} safe_validator=${standard_validator} initial_state=1
+ ${state}
+ ... ${status}
+ ... ${result} =
+ ... Getter_And_Safe_Stateful_Validator_Have_To_Succeed_Consecutively_By_Deadline
+ ... date_deadline=${date_deadline}
+ ... period_in_seconds=0.4
+ ... count=3
+ ... getter=${getter}
+ ... safe_validator=${standard_validator}
+ ... initial_state=1
BuiltIn.Should_Be_Equal ${state} 1
BuiltIn.Should_Be_Equal ${status} FAIL
BuiltIn.Should_Be_Equal ${result} Getter failed: Got negative -1
# Validator fails on first data value change, so count=1 means 2 consecutive values.
# No initial state given to show None is safe state.
# Robot code itself takes some time, so timeout has to have a reserve.
- ${result} = Wait_For_Getter_And_Safe_Stateful_Validator_Consecutive_Success timeout=1.8s period=0.1s count=1 getter=${getter} safe_validator=${standard_validator}
+ ${result} = Wait_For_Getter_And_Safe_Stateful_Validator_Consecutive_Success
+ ... timeout=1.8s
+ ... period=0.1s
+ ... count=1
+ ... getter=${getter}
+ ... safe_validator=${standard_validator}
BuiltIn.Should_Be_Equal ${result} Validated stable: 2
WFGEOSSVCS_Happy
# Validator fails on first data value change, so count=1 means 2 consecutive values.
# No initial state given to show None is safe state.
# Robot code itself takes some time, so timeout has to have a reserve.
- ${result} = Wait_For_Getter_Error_Or_Safe_Stateful_Validator_Consecutive_Success timeout=1.8s period=0.1s count=1 getter=${getter} safe_validator=${standard_validator}
+ ${result} = Wait_For_Getter_Error_Or_Safe_Stateful_Validator_Consecutive_Success
+ ... timeout=1.8s
+ ... period=0.1s
+ ... count=1
+ ... getter=${getter}
+ ... safe_validator=${standard_validator}
BuiltIn.Should_Be_Equal ${result} Validated stable: 2
WFGEOSSVCS_Early_exit
# Validator fails on first data value change, so count=1 means 2 consecutive values.
# No initial state given to show None is safe state.
# Robot code itself takes some time, so timeout has to have a reserve.
- ${status} ${message} = BuiltIn.Run_Keyword_And_Ignore_Error Wait_For_Getter_Error_Or_Safe_Stateful_Validator_Consecutive_Success timeout=1.8s period=0.1s count=1
- ... getter=${getter} safe_validator=${standard_validator}
+ ${status} ${message} = BuiltIn.Run_Keyword_And_Ignore_Error
+ ... Wait_For_Getter_Error_Or_Safe_Stateful_Validator_Consecutive_Success
+ ... timeout=1.8s
+ ... period=0.1s
+ ... count=1
+ ... getter=${getter}
+ ... safe_validator=${standard_validator}
BuiltIn.Should_Be_Equal ${status} FAIL
BuiltIn.Should_Be_Equal ${message} Getter failed: Got negative -1
WFGEOSSVCS_Sleeps_Too_Long
[Documentation] Use getter, standard validator, timeout with a reserve and checks that the expected error=timeout occurred.
${getter} = Create_Scenario_Getter_Closure ${stability_scenario} delay=0s fail_on_negative=False
- BuiltIn.Run_Keyword_And_Expect_Error Not possible to succeed within the deadline. Last result: No result yet. Wait_For_Getter_Error_Or_Safe_Stateful_Validator_Consecutive_Success timeout=9.15s period=2s count=1 getter=${getter}
+ BuiltIn.Run_Keyword_And_Expect_Error
+ ... Not possible to succeed within the deadline. Last result: No result yet.
+ ... Wait_For_Getter_Error_Or_Safe_Stateful_Validator_Consecutive_Success
+ ... timeout=9.15s
+ ... period=2s
+ ... count=1
+ ... getter=${getter}
... safe_validator=${standard_validator}
+
*** Keywords ***
WUT_Setup
[Documentation] Call Setup keywords of libraries, define reusable variables.
BuiltIn.Set_Suite_Variable ${countdown_quick} ${countdown}
${countdown} = ScalarClosures.Closure_From_Keyword_And_Arguments Stateful_Countdown 0 delay=0.3s
BuiltIn.Set_Suite_Variable ${countdown_slow} ${countdown}
- ${lsssv} = ScalarClosures.Closure_From_Keyword_And_Arguments WaitUtils.Limiting_Stability_Safe_Stateful_Validator_As_Keyword state_holder data_holder valid_minimum=1
+ ${lsssv} = ScalarClosures.Closure_From_Keyword_And_Arguments
+ ... WaitUtils.Limiting_Stability_Safe_Stateful_Validator_As_Keyword
+ ... state_holder
+ ... data_holder
+ ... valid_minimum=1
BuiltIn.Set_Suite_Variable ${standard_validator} ${lsssv}
Stateful_Countdown
- [Arguments] ${how_many_before_fail} ${delay}=0s
[Documentation] Simple stateful keyword, counting down successes.
+ [Arguments] ${how_many_before_fail} ${delay}=0s
BuiltIn.Sleep ${delay}
- BuiltIn.Run_Keyword_If ${how_many_before_fail} < 1 BuiltIn.Fail Count is down.
+ IF ${how_many_before_fail} < 1 BuiltIn.Fail Count is down.
${new_count} = BuiltIn.Evaluate ${how_many_before_fail} - 1
- [Return] ${new_count} still_alive
+ RETURN ${new_count} still_alive
Scenario_Getter_As_Keyword
- [Arguments] ${delay}=0s ${fail_on_negative}=False
[Documentation] Keyword to make getter closure from. Relies on suite variable to track private state.
+ [Arguments] ${delay}=0s ${fail_on_negative}=False
BuiltIn.Sleep ${delay}
${next_value} = Collections.Remove_From_List ${suite_scenario} 0
- BuiltIn.Return_From_Keyword_If not ${fail_on_negative} or ${next_value} >= 0 ${next_value}
+ IF not ${fail_on_negative} or ${next_value} >= 0
+ RETURN ${next_value}
+ END
BuiltIn.Fail Got negative ${next_value}
Create_Scenario_Getter_Closure
- [Arguments] ${value_list_as_scalar} ${delay}=0s ${fail_on_negative}=False
[Documentation] Store values list to suite variable, return getter closure with given kwargs.
+ [Arguments] ${value_list_as_scalar} ${delay}=0s ${fail_on_negative}=False
# TODO: Figure out why solution with the list given as varargs does not really work.
BuiltIn.Set_Suite_Variable @{suite_scenario} @{value_list_as_scalar}
# Sentinel is there to postpone "Expected list-like value, got string." failure when setting @{other_values}.
- ${getter} = ScalarClosures.Closure_From_Keyword_And_Arguments Scenario_Getter_As_Keyword delay=${delay} fail_on_negative=${fail_on_negative}
- [Return] ${getter}
+ ${getter} = ScalarClosures.Closure_From_Keyword_And_Arguments
+ ... Scenario_Getter_As_Keyword
+ ... delay=${delay}
+ ... fail_on_negative=${fail_on_negative}
+ RETURN ${getter}
*** Settings ***
-Documentation For every node, set Karaf log level to ${DEFAULT_KARAF_LOG_LEVEL}.
+Documentation For every node, set Karaf log level to ${DEFAULT_KARAF_LOG_LEVEL}.
...
-... Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved.
+... Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved.
...
-... This program and the accompanying materials are made available under the
-... terms of the Eclipse Public License v1.0 which accompanies this distribution,
-... and is available at http://www.eclipse.org/legal/epl-v10.html
+... This program and the accompanying materials are made available under the
+... terms of the Eclipse Public License v1.0 which accompanies this distribution,
+... and is available at http://www.eclipse.org/legal/epl-v10.html
...
...
-... This suite is useful for testing, run it after primary site to kep karaf.log shorter.
-Suite Setup ClusterManagement.ClusterManagement_Setup
-Default Tags clustering
-Resource ${CURDIR}/../../libraries/ClusterManagement.robot
+... This suite is useful for testing, run it after primary site to kep karaf.log shorter.
+
+Resource ${CURDIR}/../../libraries/ClusterManagement.robot
+
+Suite Setup ClusterManagement.ClusterManagement_Setup
+
+Default Tags clustering
+
*** Variables ***
-${DEFAULT_KARAF_LOG_LEVEL} INFO
+${DEFAULT_KARAF_LOG_LEVEL} INFO
+
*** Test Cases ***
Set_Levels
*** Settings ***
-Documentation Test suite to verify unification operation on different models.
-... Before test starts, configurational file have to be rewriten to change listners registration datastore type from CONFIG_API to OPERATIONAL_API.
-... Need for this change is also a reason why main feature (odl-topoprocessing-framework) is installed after file change and not during boot.
-... Suite setup also install features required for tested models, clear karaf logs for further synchronization. Tests themselves send configurational
-... xmls and verify output. Topology-id on the end of each urls must match topology-id from xml. Yang models of components in topology are defined in xmls.
-Suite Setup Setup Environment
-Suite Teardown Clean Environment
-Test Setup SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
-Test Teardown Delete Overlay Topology
-Library RequestsLibrary
-Library SSHLibrary
-Library XML
-Variables ../../../variables/topoprocessing/TopologyRequests.py
-Variables ../../../variables/topoprocessing/TargetFields.py
-Variables ../../../variables/Variables.py
-Resource ../../../libraries/KarafKeywords.robot
-Resource ../../../libraries/Utils.robot
-Resource ../../../libraries/SetupUtils.robot
-Resource ../../../libraries/TopoprocessingKeywords.robot
+Documentation Test suite to verify unification operation on different models.
+... Before test starts, configurational file have to be rewriten to change listners registration datastore type from CONFIG_API to OPERATIONAL_API.
+... Need for this change is also a reason why main feature (odl-topoprocessing-framework) is installed after file change and not during boot.
+... Suite setup also install features required for tested models, clear karaf logs for further synchronization. Tests themselves send configurational
+... xmls and verify output. Topology-id on the end of each urls must match topology-id from xml. Yang models of components in topology are defined in xmls.
+
+Library RequestsLibrary
+Library SSHLibrary
+Library XML
+Variables ../../../variables/topoprocessing/TopologyRequests.py
+Variables ../../../variables/topoprocessing/TargetFields.py
+Variables ../../../variables/Variables.py
+Resource ../../../libraries/KarafKeywords.robot
+Resource ../../../libraries/Utils.robot
+Resource ../../../libraries/SetupUtils.robot
+Resource ../../../libraries/TopoprocessingKeywords.robot
+
+Suite Setup Setup Environment
+Suite Teardown Clean Environment
+Test Setup SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
+Test Teardown Delete Overlay Topology
+
*** Test Cases ***
Unification Node
[Documentation] Test unification operation on Network Topology model
${model} Set Variable network-topology-model
- ${request} Prepare Unification Topology Request ${UNIFICATION_NT} ${model} node network-topo:1 network-topo:2
+ ${request} Prepare Unification Topology Request
+ ... ${UNIFICATION_NT}
+ ... ${model}
+ ... node
+ ... network-topo:1
+ ... network-topo:2
${request} Insert Target Field ${request} 0 ${ISIS_NODE_TE_ROUTER_ID_IPV4} 0
${request} Insert Target Field ${request} 1 ${ISIS_NODE_TE_ROUTER_ID_IPV4} 0
Basic Request Put ${request} ${OVERLAY_TOPO_URL}
- ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=8 supporting-node_count=10
- ... tp_count=14 tp-ref_count=14
+ ${resp} Wait Until Keyword Succeeds
+ ... 3x
+ ... 1s
+ ... Output Topo Should Be Complete
+ ... node_count=8
+ ... supporting-node_count=10
+ ... tp_count=14
+ ... tp-ref_count=14
Check Aggregated Node in Topology ${model} ${resp.content} 2 bgp:5 bgp:10
Check Aggregated Node in Topology ${model} ${resp.content} 1 bgp:9
Check Aggregated Node in Topology ${model} ${resp.content} 1 bgp:8
Unification Node Inventory
[Documentation] Test unification operation on inventory model
${model} Set Variable opendaylight-inventory-model
- ${request} Prepare Unification Topology Request ${UNIFICATION_NT} ${model} node openflow-topo:1 openflow-topo:2
+ ${request} Prepare Unification Topology Request
+ ... ${UNIFICATION_NT}
+ ... ${model}
+ ... node
+ ... openflow-topo:1
+ ... openflow-topo:2
${request} Insert Target Field ${request} 0 ${OPENFLOW_NODE_IP_ADDRESS} 0
${request} Insert Target Field ${request} 1 ${OPENFLOW_NODE_IP_ADDRESS} 0
Basic Request Put ${request} ${OVERLAY_TOPO_URL}
- ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=7 supporting-node_count=10
- ... tp_count=12 tp-ref_count=12
+ ${resp} Wait Until Keyword Succeeds
+ ... 3x
+ ... 1s
+ ... Output Topo Should Be Complete
+ ... node_count=7
+ ... supporting-node_count=10
+ ... tp_count=12
+ ... tp-ref_count=12
Check Aggregated Node in Topology ${model} ${resp.content} 3 of-node:10 of-node:4
Check Aggregated Node in Topology ${model} ${resp.content} 0 of-node:7 of-node:9
Check Aggregated Node in Topology ${model} ${resp.content} 0 of-node:8
Unification Scripting Node
[Documentation] Test unification operation on Network Topology model using scripting
${model} Set Variable network-topology-model
- ${request} Prepare Unification Topology Request ${UNIFICATION_NT} ${model} node network-topo:1 network-topo:2
+ ${request} Prepare Unification Topology Request
+ ... ${UNIFICATION_NT}
+ ... ${model}
+ ... node
+ ... network-topo:1
+ ... network-topo:2
${request} Insert Target Field ${request} 0 ${ISIS_NODE_TE_ROUTER_ID_IPV4} 0
${request} Insert Target Field ${request} 1 ${ISIS_NODE_TE_ROUTER_ID_IPV4} 0
- ${request} Insert Scripting into Request ${request} javascript if (originalItem.getLeafNodes().get(java.lang.Integer.valueOf('0')).getValue().indexOf("192.168.1.1") > -1 && newItem.getLeafNodes().get(java.lang.Integer.valueOf('0')).getValue().indexOf("192.168.1.3") > -1 || originalItem.getLeafNodes().get(java.lang.Integer.valueOf('0')).getValue().indexOf("192.168.1.3") > -1 && newItem.getLeafNodes().get(java.lang.Integer.valueOf('0')).getValue().indexOf("192.168.1.1") > -1) {aggregable.setResult(true);} else { aggregable.setResult(false);}
+ ${request} Insert Scripting into Request
+ ... ${request}
+ ... javascript
+ ... if (originalItem.getLeafNodes().get(java.lang.Integer.valueOf('0')).getValue().indexOf("192.168.1.1") > -1 && newItem.getLeafNodes().get(java.lang.Integer.valueOf('0')).getValue().indexOf("192.168.1.3") > -1 || originalItem.getLeafNodes().get(java.lang.Integer.valueOf('0')).getValue().indexOf("192.168.1.3") > -1 && newItem.getLeafNodes().get(java.lang.Integer.valueOf('0')).getValue().indexOf("192.168.1.1") > -1) {aggregable.setResult(true);} else { aggregable.setResult(false);}
Basic Request Put ${request} ${OVERLAY_TOPO_URL}
- ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=9 supporting-node_count=10
- ... tp_count=14 tp-ref_count=14
+ ${resp} Wait Until Keyword Succeeds
+ ... 3x
+ ... 1s
+ ... Output Topo Should Be Complete
+ ... node_count=9
+ ... supporting-node_count=10
+ ... tp_count=14
+ ... tp-ref_count=14
Check Aggregated Node in Topology ${model} ${resp.content} 1 bgp:10
Check Aggregated Node in Topology ${model} ${resp.content} 1 bgp:9
Check Aggregated Node in Topology ${model} ${resp.content} 1 bgp:8
Unification Scripting Node Inventory
[Documentation] Test unification operation on inventory model using scripting
${model} Set Variable opendaylight-inventory-model
- ${request} Prepare Unification Topology Request ${UNIFICATION_NT} ${model} node openflow-topo:1 openflow-topo:2
+ ${request} Prepare Unification Topology Request
+ ... ${UNIFICATION_NT}
+ ... ${model}
+ ... node
+ ... openflow-topo:1
+ ... openflow-topo:2
${request} Insert Target Field ${request} 0 ${OPENFLOW_NODE_IP_ADDRESS} 0
${request} Insert Target Field ${request} 1 ${OPENFLOW_NODE_IP_ADDRESS} 0
- ${request} Insert Scripting into Request ${request} javascript if (originalItem.getLeafNodes().get(java.lang.Integer.valueOf('0')).getValue().indexOf("192.168.1.2") > -1 && newItem.getLeafNodes().get(java.lang.Integer.valueOf('0')).getValue().indexOf("192.168.1.4") > -1 || originalItem.getLeafNodes().get(java.lang.Integer.valueOf('0')).getValue().indexOf("192.168.1.4") > -1 && newItem.getLeafNodes().get(java.lang.Integer.valueOf('0')).getValue().indexOf("192.168.1.2") > -1) {aggregable.setResult(true);} else { aggregable.setResult(false);}
+ ${request} Insert Scripting into Request
+ ... ${request}
+ ... javascript
+ ... if (originalItem.getLeafNodes().get(java.lang.Integer.valueOf('0')).getValue().indexOf("192.168.1.2") > -1 && newItem.getLeafNodes().get(java.lang.Integer.valueOf('0')).getValue().indexOf("192.168.1.4") > -1 || originalItem.getLeafNodes().get(java.lang.Integer.valueOf('0')).getValue().indexOf("192.168.1.4") > -1 && newItem.getLeafNodes().get(java.lang.Integer.valueOf('0')).getValue().indexOf("192.168.1.2") > -1) {aggregable.setResult(true);} else { aggregable.setResult(false);}
Basic Request Put ${request} ${OVERLAY_TOPO_URL}
- ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=9 supporting-node_count=10
- ... tp_count=12 tp-ref_count=12
+ ${resp} Wait Until Keyword Succeeds
+ ... 3x
+ ... 1s
+ ... Output Topo Should Be Complete
+ ... node_count=9
+ ... supporting-node_count=10
+ ... tp_count=12
+ ... tp-ref_count=12
Check Aggregated Node in Topology ${model} ${resp.content} 0 of-node:10
Check Aggregated Node in Topology ${model} ${resp.content} 0 of-node:9
Check Aggregated Node in Topology ${model} ${resp.content} 3 of-node:2 of-node:8
Unification Node Inside
[Documentation] Test of unification type of aggregation inside on nodes on Network Topology model
${model} Set Variable network-topology-model
- ${request} Prepare Unification Inside Topology Request ${UNIFICATION_NT_AGGREGATE_INSIDE} ${model} node network-topo:1
+ ${request} Prepare Unification Inside Topology Request
+ ... ${UNIFICATION_NT_AGGREGATE_INSIDE}
+ ... ${model}
+ ... node
+ ... network-topo:1
${request} Insert Target Field ${request} 0 ${ISIS_NODE_TE_ROUTER_ID_IPV4} 0
Basic Request Put ${request} ${OVERLAY_TOPO_URL}
- ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=4 supporting-node_count=5
- ... tp_count=8 tp-ref_count=8
+ ${resp} Wait Until Keyword Succeeds
+ ... 3x
+ ... 1s
+ ... Output Topo Should Be Complete
+ ... node_count=4
+ ... supporting-node_count=5
+ ... tp_count=8
+ ... tp-ref_count=8
Check Aggregated Node in Topology ${model} ${resp.content} 1 bgp:5
Check Aggregated Node in Topology ${model} ${resp.content} 4 bgp:3 bgp:4
Check Aggregated Node in Topology ${model} ${resp.content} 0 bgp:2
Unification Node Inside Inventory
[Documentation] Test of unification type of aggregation inside on nodes on Inventory model
${model} Set Variable opendaylight-inventory-model
- ${request} Prepare Unification Inside Topology Request ${UNIFICATION_NT_AGGREGATE_INSIDE} ${model} node openflow-topo:2
+ ${request} Prepare Unification Inside Topology Request
+ ... ${UNIFICATION_NT_AGGREGATE_INSIDE}
+ ... ${model}
+ ... node
+ ... openflow-topo:2
${request} Insert Target Field ${request} 0 ${OPENFLOW_NODE_IP_ADDRESS} 0
Basic Request Put ${request} ${OVERLAY_TOPO_URL}
- ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=4 supporting-node_count=5
+ ${resp} Wait Until Keyword Succeeds
+ ... 3x
+ ... 1s
+ ... Output Topo Should Be Complete
+ ... node_count=4
+ ... supporting-node_count=5
... tp_count=0
Check Aggregated Node in Topology ${model} ${resp.content} 0 of-node:10
Check Aggregated Node in Topology ${model} ${resp.content} 0 of-node:7 of-node:9
Unification Termination Point Inside
[Documentation] Test aggregate inside operation on termination points
${model} Set Variable network-topology-model
- ${request} Prepare Unification Inside Topology Request ${UNIFICATION_NT_AGGREGATE_INSIDE} ${model} termination-point network-topo:1
+ ${request} Prepare Unification Inside Topology Request
+ ... ${UNIFICATION_NT_AGGREGATE_INSIDE}
+ ... ${model}
+ ... termination-point
+ ... network-topo:1
${request} Insert Target Field ${request} 0 ${OVSDB_OFPORT} 0
Basic Request Put ${request} ${OVERLAY_TOPO_URL}
- ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=5 supporting-node_count=5
- ... tp_count=6 tp-ref_count=8
+ ${resp} Wait Until Keyword Succeeds
+ ... 3x
+ ... 1s
+ ... Output Topo Should Be Complete
+ ... node_count=5
+ ... supporting-node_count=5
+ ... tp_count=6
+ ... tp-ref_count=8
${topology_id} Set Variable network-topo:1
- Check Aggregated Termination Point in Node ${model} ${resp.content} ${topology_id} bgp:1 tp:1:1 tp:1:1
+ Check Aggregated Termination Point in Node
+ ... ${model}
+ ... ${resp.content}
+ ... ${topology_id}
+ ... bgp:1
+ ... tp:1:1
+ ... tp:1:1
... tp:1:2
- Check Aggregated Termination Point in Node ${model} ${resp.content} ${topology_id} bgp:1 tp:1:3 tp:1:3
- Check Aggregated Termination Point in Node ${model} ${resp.content} ${topology_id} bgp:3 tp:3:1 tp:3:1
- Check Aggregated Termination Point in Node ${model} ${resp.content} ${topology_id} bgp:3 tp:3:2 tp:3:2
- Check Aggregated Termination Point in Node ${model} ${resp.content} ${topology_id} bgp:4 tp:4:1 tp:4:1
+ Check Aggregated Termination Point in Node
+ ... ${model}
+ ... ${resp.content}
+ ... ${topology_id}
+ ... bgp:1
+ ... tp:1:3
+ ... tp:1:3
+ Check Aggregated Termination Point in Node
+ ... ${model}
+ ... ${resp.content}
+ ... ${topology_id}
+ ... bgp:3
+ ... tp:3:1
+ ... tp:3:1
+ Check Aggregated Termination Point in Node
+ ... ${model}
+ ... ${resp.content}
+ ... ${topology_id}
+ ... bgp:3
+ ... tp:3:2
+ ... tp:3:2
+ Check Aggregated Termination Point in Node
+ ... ${model}
+ ... ${resp.content}
+ ... ${topology_id}
+ ... bgp:4
+ ... tp:4:1
+ ... tp:4:1
... tp:4:2
- Check Aggregated Termination Point in Node ${model} ${resp.content} ${topology_id} bgp:5 tp:5:1 tp:5:1
+ Check Aggregated Termination Point in Node
+ ... ${model}
+ ... ${resp.content}
+ ... ${topology_id}
+ ... bgp:5
+ ... tp:5:1
+ ... tp:5:1
Unification Termination Point Inside Inventory
[Documentation] Test aggregate inside operation on termination points
${model} Set Variable opendaylight-inventory-model
- ${request} Prepare Unification Inside Topology Request ${UNIFICATION_NT_AGGREGATE_INSIDE} ${model} termination-point openflow-topo:1
+ ${request} Prepare Unification Inside Topology Request
+ ... ${UNIFICATION_NT_AGGREGATE_INSIDE}
+ ... ${model}
+ ... termination-point
+ ... openflow-topo:1
${request} Insert Target Field ${request} 0 ${OPENFLOW_NODE_CONNECTOR_PORT_NUMBER} 0
Basic Request Put ${request} ${OVERLAY_TOPO_URL}
- ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=5 supporting-node_count=5
- ... tp_count=8 tp-ref_count=12
+ ${resp} Wait Until Keyword Succeeds
+ ... 3x
+ ... 1s
+ ... Output Topo Should Be Complete
+ ... node_count=5
+ ... supporting-node_count=5
+ ... tp_count=8
+ ... tp-ref_count=12
${topology_id} Set Variable openflow-topo:1
- Check Aggregated Termination Point in Node ${model} ${resp.content} ${topology_id} of-node:5 tp:5:1 tp:5:1
- Check Aggregated Termination Point in Node ${model} ${resp.content} ${topology_id} of-node:4 tp:4:1 tp:4:1
- ... tp:4:2 tp:4:3
- Check Aggregated Termination Point in Node ${model} ${resp.content} ${topology_id} of-node:3 tp:3:1 tp:3:1
+ Check Aggregated Termination Point in Node
+ ... ${model}
+ ... ${resp.content}
+ ... ${topology_id}
+ ... of-node:5
+ ... tp:5:1
+ ... tp:5:1
+ Check Aggregated Termination Point in Node
+ ... ${model}
+ ... ${resp.content}
+ ... ${topology_id}
+ ... of-node:4
+ ... tp:4:1
+ ... tp:4:1
+ ... tp:4:2
+ ... tp:4:3
+ Check Aggregated Termination Point in Node
+ ... ${model}
+ ... ${resp.content}
+ ... ${topology_id}
+ ... of-node:3
+ ... tp:3:1
+ ... tp:3:1
... tp:3:2
- Check Aggregated Termination Point in Node ${model} ${resp.content} ${topology_id} of-node:3 tp:3:3 tp:3:3
- Check Aggregated Termination Point in Node ${model} ${resp.content} ${topology_id} of-node:2 tp:2:1 tp:2:1
- Check Aggregated Termination Point in Node ${model} ${resp.content} ${topology_id} of-node:2 tp:2:2 tp:2:2
- Check Aggregated Termination Point in Node ${model} ${resp.content} ${topology_id} of-node:2 tp:2:3 tp:2:3
- Check Aggregated Termination Point in Node ${model} ${resp.content} ${topology_id} of-node:1 tp:1:1 tp:1:1
+ Check Aggregated Termination Point in Node
+ ... ${model}
+ ... ${resp.content}
+ ... ${topology_id}
+ ... of-node:3
+ ... tp:3:3
+ ... tp:3:3
+ Check Aggregated Termination Point in Node
+ ... ${model}
+ ... ${resp.content}
+ ... ${topology_id}
+ ... of-node:2
+ ... tp:2:1
+ ... tp:2:1
+ Check Aggregated Termination Point in Node
+ ... ${model}
+ ... ${resp.content}
+ ... ${topology_id}
+ ... of-node:2
+ ... tp:2:2
+ ... tp:2:2
+ Check Aggregated Termination Point in Node
+ ... ${model}
+ ... ${resp.content}
+ ... ${topology_id}
+ ... of-node:2
+ ... tp:2:3
+ ... tp:2:3
+ Check Aggregated Termination Point in Node
+ ... ${model}
+ ... ${resp.content}
+ ... ${topology_id}
+ ... of-node:1
+ ... tp:1:1
+ ... tp:1:1
... tp:1:2
*** Settings ***
-Documentation Test suite to verify fitration operation on different models.
-... Before test starts, configurational file have to be rewriten to change listners registration datastore type from CONFIGURATION to OPERATIONAL.
-... Need for this change is also a reason why main feature (odl-topoprocessing-framework) is installed after file change and not during boot.
-... Tests themselves install feature required for specific model, clear karaf logs for futher synchronization, send configurational xmls and verify output.
-... Topology-id on the end of each urls must match topology-id from xml. Yang models of components in topology are defined in xmls.
-Suite Setup Setup Environment
-Suite Teardown Clean Environment
-Test Setup SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
-Test Teardown Delete Overlay Topology
-Library RequestsLibrary
-Library SSHLibrary
-Library XML
-Variables ../../../variables/topoprocessing/TopologyRequests.py
-Variables ../../../variables/topoprocessing/TargetFields.py
-Variables ../../../variables/Variables.py
-Resource ../../../libraries/KarafKeywords.robot
-Resource ../../../libraries/Utils.robot
-Resource ../../../libraries/TopoprocessingKeywords.robot
+Documentation Test suite to verify fitration operation on different models.
+... Before test starts, configurational file have to be rewriten to change listners registration datastore type from CONFIGURATION to OPERATIONAL.
+... Need for this change is also a reason why main feature (odl-topoprocessing-framework) is installed after file change and not during boot.
+... Tests themselves install feature required for specific model, clear karaf logs for futher synchronization, send configurational xmls and verify output.
+... Topology-id on the end of each urls must match topology-id from xml. Yang models of components in topology are defined in xmls.
+
+Library RequestsLibrary
+Library SSHLibrary
+Library XML
+Variables ../../../variables/topoprocessing/TopologyRequests.py
+Variables ../../../variables/topoprocessing/TargetFields.py
+Variables ../../../variables/Variables.py
+Resource ../../../libraries/KarafKeywords.robot
+Resource ../../../libraries/Utils.robot
+Resource ../../../libraries/TopoprocessingKeywords.robot
+
+Suite Setup Setup Environment
+Suite Teardown Clean Environment
+Test Setup SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
+Test Teardown Delete Overlay Topology
+
*** Test Cases ***
Filtration IPV4 Network Topology Model
[Documentation] Test of ipv4 type of filtration operation on Network Topology model
- ${request} Prepare Filtration Topology Request ${FILTRATION_NT} network-topology-model node network-topo:1
+ ${request} Prepare Filtration Topology Request
+ ... ${FILTRATION_NT}
+ ... network-topology-model
+ ... node
+ ... network-topo:1
${request} Insert Filter ${request} ${FILTER_IPV4} ${ISIS_NODE_TE_ROUTER_ID_IPV4}
${request} Set IPV4 Filter ${request} 192.168.1.1/24
Basic Request Put ${request} ${OVERLAY_TOPO_URL}
- ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=2 supporting-node_count=2
- ... node-ref_count=2 tp_count=3 tp-ref_count=3
+ ${resp} Wait Until Keyword Succeeds
+ ... 3x
+ ... 1s
+ ... Output Topo Should Be Complete
+ ... node_count=2
+ ... supporting-node_count=2
+ ... node-ref_count=2
+ ... tp_count=3
+ ... tp-ref_count=3
Check Filtered Nodes in Topology ${resp.content} 3 bgp:1 bgp:2
Filtration IPV4 Inventory Model
[Documentation] Test of ipv4 type of filtration operation on Inventory model
- ${request} Prepare Filtration Topology Request ${FILTRATION_NT} opendaylight-inventory-model node openflow-topo:1
+ ${request} Prepare Filtration Topology Request
+ ... ${FILTRATION_NT}
+ ... opendaylight-inventory-model
+ ... node
+ ... openflow-topo:1
${request} Insert Filter ${request} ${FILTER_IPV4} ${OPENFLOW_NODE_IP_ADDRESS}
${request} Set IPV4 Filter ${request} 192.168.1.1/24
Basic Request Put ${request} ${OVERLAY_TOPO_URL}
- ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=3 supporting-node_count=3
- ... node-ref_count=3 tp_count=8 tp-ref_count=8
+ ${resp} Wait Until Keyword Succeeds
+ ... 3x
+ ... 1s
+ ... Output Topo Should Be Complete
+ ... node_count=3
+ ... supporting-node_count=3
+ ... node-ref_count=3
+ ... tp_count=8
+ ... tp-ref_count=8
Check Filtered Nodes in Topology ${resp.content} 8 of-node:1 of-node:2 of-node:3
Filtration Range Number Network Topology Model
[Documentation] Test of range number type of filtration operation on Network Topology model
- ${request} Prepare Filtration Topology Request ${FILTRATION_NT} network-topology-model node network-topo:2
+ ${request} Prepare Filtration Topology Request
+ ... ${FILTRATION_NT}
+ ... network-topology-model
+ ... node
+ ... network-topo:2
${request} Insert Filter ${request} ${FILTER_RANGE_NUMBER} ${OVSDB_OVS_VERSION}
${request} Set Range Number Filter ${request} 20 25
Basic Request Put ${request} ${OVERLAY_TOPO_URL}
- ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=4 supporting-node_count=4
- ... node-ref_count=4 tp_count=5 tp-ref_count=5
+ ${resp} Wait Until Keyword Succeeds
+ ... 3x
+ ... 1s
+ ... Output Topo Should Be Complete
+ ... node_count=4
+ ... supporting-node_count=4
+ ... node-ref_count=4
+ ... tp_count=5
+ ... tp-ref_count=5
Check Filtered Nodes in Topology ${resp.content} 5 bgp:7 bgp:8 bgp:9 bgp:10
Filtration Range Number Inventory Model
[Documentation] Test of range number type of filtration operation on Inventory model
- ${request} Prepare Filtration Topology Request ${FILTRATION_NT} opendaylight-inventory-model node openflow-topo:2
+ ${request} Prepare Filtration Topology Request
+ ... ${FILTRATION_NT}
+ ... opendaylight-inventory-model
+ ... node
+ ... openflow-topo:2
${request} Insert Filter ${request} ${FILTER_RANGE_NUMBER} ${OPENFLOW_NODE_SERIAL_NUMBER}
${request} Set Range Number Filter ${request} 20 25
Basic Request Put ${request} ${OVERLAY_TOPO_URL}
- ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=3 supporting-node_count=3
- ... node-ref_count=3 tp_count=0 tp-ref_count=0
+ ${resp} Wait Until Keyword Succeeds
+ ... 3x
+ ... 1s
+ ... Output Topo Should Be Complete
+ ... node_count=3
+ ... supporting-node_count=3
+ ... node-ref_count=3
+ ... tp_count=0
+ ... tp-ref_count=0
Check Filtered Nodes in Topology ${resp.content} 0 of-node:8 of-node:9 of-node:10
Filtration Specific String Network Topology Model
[Documentation] Test of specific string type of filtration operation on Network Topology model
- ${request} Prepare Filtration Topology Request ${FILTRATION_NT} network-topology-model node network-topo:2
+ ${request} Prepare Filtration Topology Request
+ ... ${FILTRATION_NT}
+ ... network-topology-model
+ ... node
+ ... network-topo:2
${request} Insert Filter ${request} ${FILTER_SPECIFIC_STRING} ${OVSDB_OVS_VERSION}
${request} Set Specific String Filter ${request} 25
Basic Request Put ${request} ${OVERLAY_TOPO_URL}
- ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=2 supporting-node_count=2
- ... node-ref_count=2 tp_count=2 tp-ref_count=2
+ ${resp} Wait Until Keyword Succeeds
+ ... 3x
+ ... 1s
+ ... Output Topo Should Be Complete
+ ... node_count=2
+ ... supporting-node_count=2
+ ... node-ref_count=2
+ ... tp_count=2
+ ... tp-ref_count=2
Check Filtered Nodes in Topology ${resp.content} 2 bgp:9 bgp:10
Filtration Specific String Inventory Model
[Documentation] Test of specific string type of filtration operation on Inventory model
- ${request} Prepare Filtration Topology Request ${FILTRATION_NT} opendaylight-inventory-model node openflow-topo:2
+ ${request} Prepare Filtration Topology Request
+ ... ${FILTRATION_NT}
+ ... opendaylight-inventory-model
+ ... node
+ ... openflow-topo:2
${request} Insert Filter ${request} ${FILTER_SPECIFIC_STRING} ${OPENFLOW_NODE_SERIAL_NUMBER}
${request} Set Specific String Filter ${request} 21
Basic Request Put ${request} ${OVERLAY_TOPO_URL}
- ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=2 supporting-node_count=2
- ... node-ref_count=2 tp_count=0 tp-ref_count=0
+ ${resp} Wait Until Keyword Succeeds
+ ... 3x
+ ... 1s
+ ... Output Topo Should Be Complete
+ ... node_count=2
+ ... supporting-node_count=2
+ ... node-ref_count=2
+ ... tp_count=0
+ ... tp-ref_count=0
Check Filtered Nodes in Topology ${resp.content} 0 of-node:8 of-node:9
Filtration Range String Network Topology Model
[Documentation] Test of range string type of filtration operation on Network Topology model
- ${request} Prepare Filtration Topology Request ${FILTRATION_NT} network-topology-model node network-topo:2
+ ${request} Prepare Filtration Topology Request
+ ... ${FILTRATION_NT}
+ ... network-topology-model
+ ... node
+ ... network-topo:2
${request} Insert Filter ${request} ${FILTER_RANGE_STRING} ${OVSDB_OVS_VERSION}
${request} Set Range String Filter ${request} 20 25
Basic Request Put ${request} ${OVERLAY_TOPO_URL}
- ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=4 supporting-node_count=4
- ... node-ref_count=4 tp_count=5 tp-ref_count=5
+ ${resp} Wait Until Keyword Succeeds
+ ... 3x
+ ... 1s
+ ... Output Topo Should Be Complete
+ ... node_count=4
+ ... supporting-node_count=4
+ ... node-ref_count=4
+ ... tp_count=5
+ ... tp-ref_count=5
Check Filtered Nodes in Topology ${resp.content} 5 bgp:7 bgp:8 bgp:9 bgp:10
Filtration Range String Inventory Model
[Documentation] Test of range string type of filtration operation on Inventory model
- ${request} Prepare Filtration Topology Request ${FILTRATION_NT} opendaylight-inventory-model node openflow-topo:2
+ ${request} Prepare Filtration Topology Request
+ ... ${FILTRATION_NT}
+ ... opendaylight-inventory-model
+ ... node
+ ... openflow-topo:2
${request} Insert Filter ${request} ${FILTER_RANGE_STRING} ${OPENFLOW_NODE_SERIAL_NUMBER}
${request} Set Range String Filter ${request} 20 25
Basic Request Put ${request} ${OVERLAY_TOPO_URL}
- ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=3 supporting-node_count=3
- ... node-ref_count=3 tp_count=0 tp-ref_count=0
+ ${resp} Wait Until Keyword Succeeds
+ ... 3x
+ ... 1s
+ ... Output Topo Should Be Complete
+ ... node_count=3
+ ... supporting-node_count=3
+ ... node-ref_count=3
+ ... tp_count=0
+ ... tp-ref_count=0
Check Filtered Nodes in Topology ${resp.content} 0 of-node:8 of-node:9 of-node:10
Filtration IPV6 Network Topology Model
[Documentation] Test of ipv6 type of filtration operation on Network Topology model
- ${request} Prepare Filtration Topology Request ${FILTRATION_NT} network-topology-model node network-topo:3
+ ${request} Prepare Filtration Topology Request
+ ... ${FILTRATION_NT}
+ ... network-topology-model
+ ... node
+ ... network-topo:3
${request} Insert Filter ${request} ${FILTER_IPV6} ${ISIS_NODE_TE_ROUTER_ID_IPV6}
${request} Set IPV6 Filter ${request} fe80:0:0:0:0:0:c0a8:101/120
Basic Request Put ${request} ${OVERLAY_TOPO_URL}
- ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=2 supporting-node_count=2
- ... node-ref_count=2 tp_count=1 tp-ref_count=1
+ ${resp} Wait Until Keyword Succeeds
+ ... 3x
+ ... 1s
+ ... Output Topo Should Be Complete
+ ... node_count=2
+ ... supporting-node_count=2
+ ... node-ref_count=2
+ ... tp_count=1
+ ... tp-ref_count=1
Check Filtered Nodes in Topology ${resp.content} 1 bgp:11 bgp:12
Filtration IPV6 Inventory Model
[Documentation] Test of ipv6 type of filtration operation on Inventory model
- ${request} Prepare Filtration Topology Request ${FILTRATION_NT} opendaylight-inventory-model node openflow-topo:3
+ ${request} Prepare Filtration Topology Request
+ ... ${FILTRATION_NT}
+ ... opendaylight-inventory-model
+ ... node
+ ... openflow-topo:3
${request} Insert Filter ${request} ${FILTER_IPV6} ${OPENFLOW_NODE_IP_ADDRESS}
${request} Set IPV6 Filter ${request} fe80:0:0:0:0:0:c0a8:201/120
Basic Request Put ${request} ${OVERLAY_TOPO_URL}
- ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=3 supporting-node_count=3
- ... node-ref_count=3 tp_count=0 tp-ref_count=0
+ ${resp} Wait Until Keyword Succeeds
+ ... 3x
+ ... 1s
+ ... Output Topo Should Be Complete
+ ... node_count=3
+ ... supporting-node_count=3
+ ... node-ref_count=3
+ ... tp_count=0
+ ... tp-ref_count=0
Check Filtered Nodes in Topology ${resp.content} 0 of-node:12 of-node:14 of-node:15
Filtration Script Network Topology Model
[Documentation] Test of script type of filtration operation on Network Topology model
- ${request} Prepare Filtration Topology Request ${FILTRATION_NT} network-topology-model node network-topo:1
+ ${request} Prepare Filtration Topology Request
+ ... ${FILTRATION_NT}
+ ... network-topology-model
+ ... node
+ ... network-topo:1
${request} Insert Filter ${request} ${FILTER_SCRIPT} ${ISIS_NODE_TE_ROUTER_ID_IPV4}
- ${script} Set Variable if (node.getValue().indexOf("192.168.1") > -1 ) {filterOut.setResult(true);} else {filterOut.setResult(false);}
+ ${script} Set Variable
+ ... if (node.getValue().indexOf("192.168.1") > -1 ) {filterOut.setResult(true);} else {filterOut.setResult(false);}
${request} Set Script Filter ${request} javascript ${script}
Basic Request Put ${request} ${OVERLAY_TOPO_URL}
- ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=3 supporting-node_count=3
- ... node-ref_count=3 tp_count=5 tp-ref_count=5
+ ${resp} Wait Until Keyword Succeeds
+ ... 3x
+ ... 1s
+ ... Output Topo Should Be Complete
+ ... node_count=3
+ ... supporting-node_count=3
+ ... node-ref_count=3
+ ... tp_count=5
+ ... tp-ref_count=5
Check Filtered Nodes in Topology ${resp.content} 5 bgp:3 bgp:4 bgp:5
Filtration Script Inventory Model
[Documentation] Test of script type of filtration operation on Inventory model
- ${request} Prepare Filtration Topology Request ${FILTRATION_NT} opendaylight-inventory-model node openflow-topo:1
+ ${request} Prepare Filtration Topology Request
+ ... ${FILTRATION_NT}
+ ... opendaylight-inventory-model
+ ... node
+ ... openflow-topo:1
${request} Insert Filter ${request} ${FILTER_SCRIPT} ${OPENFLOW_NODE_IP_ADDRESS}
- ${script} Set Variable if (node.getValue().indexOf("192.168.2") > -1 ) {filterOut.setResult(true);} else {filterOut.setResult(false);}
+ ${script} Set Variable
+ ... if (node.getValue().indexOf("192.168.2") > -1 ) {filterOut.setResult(true);} else {filterOut.setResult(false);}
${request} Set Script Filter ${request} javascript ${script}
Basic Request Put ${request} ${OVERLAY_TOPO_URL}
- ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=3 supporting-node_count=3
- ... node-ref_count=3 tp_count=8 tp-ref_count=8
+ ${resp} Wait Until Keyword Succeeds
+ ... 3x
+ ... 1s
+ ... Output Topo Should Be Complete
+ ... node_count=3
+ ... supporting-node_count=3
+ ... node-ref_count=3
+ ... tp_count=8
+ ... tp-ref_count=8
Check Filtered Nodes in Topology ${resp.content} 8 of-node:1 of-node:2 of-node:3
*** Settings ***
-Documentation Test suite to verify fitration operation on different models.
-... Before test starts, configurational file have to be rewriten to change listners registration datastore type from CONFIGURATION to OPERATIONAL.
-... Need for this change is also a reason why main feature (odl-topoprocessing-framework) is installed after file change and not during boot.
-... Tests themselves install feature required for specific model, clear karaf logs for futher synchronization, send configurational xmls and verify output.
-... Topology-id on the end of each urls must match topology-id from xml. Yang models of components in topology are defined in xmls.
-Suite Setup Setup Environment
-Suite Teardown Clean Environment
-Test Setup SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
-Test Teardown Delete Overlay Topology
-Library RequestsLibrary
-Library SSHLibrary
-Library XML
-Variables ../../../variables/topoprocessing/TopologyRequests.py
-Variables ../../../variables/topoprocessing/TargetFields.py
-Variables ../../../variables/Variables.py
-Resource ../../../libraries/KarafKeywords.robot
-Resource ../../../libraries/Utils.robot
-Resource ../../../libraries/TopoprocessingKeywords.robot
+Documentation Test suite to verify fitration operation on different models.
+... Before test starts, configurational file have to be rewriten to change listners registration datastore type from CONFIGURATION to OPERATIONAL.
+... Need for this change is also a reason why main feature (odl-topoprocessing-framework) is installed after file change and not during boot.
+... Tests themselves install feature required for specific model, clear karaf logs for futher synchronization, send configurational xmls and verify output.
+... Topology-id on the end of each urls must match topology-id from xml. Yang models of components in topology are defined in xmls.
+
+Library RequestsLibrary
+Library SSHLibrary
+Library XML
+Variables ../../../variables/topoprocessing/TopologyRequests.py
+Variables ../../../variables/topoprocessing/TargetFields.py
+Variables ../../../variables/Variables.py
+Resource ../../../libraries/KarafKeywords.robot
+Resource ../../../libraries/Utils.robot
+Resource ../../../libraries/TopoprocessingKeywords.robot
+
+Suite Setup Setup Environment
+Suite Teardown Clean Environment
+Test Setup SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
+Test Teardown Delete Overlay Topology
+
*** Test Cases ***
Filtration Range Number Network Topology Model
[Documentation] Test of range number type of filtration operation on Network Topology model
- ${request} Prepare Filtration Topology Request ${FILTRATION_NT} network-topology-model termination-point network-topo:2
+ ${request} Prepare Filtration Topology Request
+ ... ${FILTRATION_NT}
+ ... network-topology-model
+ ... termination-point
+ ... network-topo:2
${request} Insert Filter ${request} ${FILTER_RANGE_NUMBER} ${OVSDB_OFPORT}
${request} Set Range Number Filter ${request} 1115 1119
Basic Request Put ${request} ${OVERLAY_TOPO_URL}
- ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=5 supporting-node_count=5
- ... node-ref_count=5 tp_count=3 tp-ref_count=3
+ ${resp} Wait Until Keyword Succeeds
+ ... 3x
+ ... 1s
+ ... Output Topo Should Be Complete
+ ... node_count=5
+ ... supporting-node_count=5
+ ... node-ref_count=5
+ ... tp_count=3
+ ... tp-ref_count=3
Check Filtered Termination Points in Node ${resp.content} bgp:6 tp:6:1
Check Filtered Termination Points in Node ${resp.content} bgp:7 tp:7:1 tp:7:2
Check Filtered Termination Points in Node ${resp.content} bgp:8
Filtration Range Number Inventory Model
[Documentation] Test of range number type of filtration operation on Inventory model
- ${request} Prepare Filtration Topology Request ${FILTRATION_NT} opendaylight-inventory-model termination-point openflow-topo:1
+ ${request} Prepare Filtration Topology Request
+ ... ${FILTRATION_NT}
+ ... opendaylight-inventory-model
+ ... termination-point
+ ... openflow-topo:1
${request} Insert Filter ${request} ${FILTER_RANGE_NUMBER} ${OPENFLOW_NODE_CONNECTOR_PORT_NUMBER}
${request} Set Range Number Filter ${request} 2 4
Basic Request Put ${request} ${OVERLAY_TOPO_URL}
- ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=5 supporting-node_count=5
- ... node-ref_count=5 tp_count=5 tp-ref_count=5
+ ${resp} Wait Until Keyword Succeeds
+ ... 3x
+ ... 1s
+ ... Output Topo Should Be Complete
+ ... node_count=5
+ ... supporting-node_count=5
+ ... node-ref_count=5
+ ... tp_count=5
+ ... tp-ref_count=5
Check Filtered Termination Points in Node ${resp.content} of-node:1
Check Filtered Termination Points in Node ${resp.content} of-node:2 tp:2:3 tp:2:2
Check Filtered Termination Points in Node ${resp.content} of-node:3 tp:3:1 tp:3:2
Filtration Specific Number Network Topology Model
[Documentation] Test of specific number type of filtration operation on Network Topology model
- ${request} Prepare Filtration Topology Request ${FILTRATION_NT} network-topology-model termination-point network-topo:2
+ ${request} Prepare Filtration Topology Request
+ ... ${FILTRATION_NT}
+ ... network-topology-model
+ ... termination-point
+ ... network-topo:2
${request} Insert Filter ${request} ${FILTER_SPECIFIC_NUMBER} ${OVSDB_OFPORT}
${request} Set Specific Number Filter ${request} 1119
Basic Request Put ${request} ${OVERLAY_TOPO_URL}
- ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=5 supporting-node_count=5
- ... node-ref_count=5 tp_count=1 tp-ref_count=1
+ ${resp} Wait Until Keyword Succeeds
+ ... 3x
+ ... 1s
+ ... Output Topo Should Be Complete
+ ... node_count=5
+ ... supporting-node_count=5
+ ... node-ref_count=5
+ ... tp_count=1
+ ... tp-ref_count=1
${node} Get Element ${resp.content} xpath=.//node/supporting-node[node-ref='bgp:7']/..
${node} Element to String ${node}
Should Contain X Times ${node} <termination-point> 1
Filtration Specific Number Inventory Model
[Documentation] Test of specific number type of filtration operation on Inventory model
- ${request} Prepare Filtration Topology Request ${FILTRATION_NT} opendaylight-inventory-model termination-point openflow-topo:1
+ ${request} Prepare Filtration Topology Request
+ ... ${FILTRATION_NT}
+ ... opendaylight-inventory-model
+ ... termination-point
+ ... openflow-topo:1
${request} Insert Filter ${request} ${FILTER_SPECIFIC_NUMBER} ${OPENFLOW_NODE_CONNECTOR_MAXIMUM_SPEED}
${request} Set Specific Number Filter ${request} 2
Basic Request Put ${request} ${OVERLAY_TOPO_URL}
- ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=5 supporting-node_count=5
- ... node-ref_count=5 tp_count=3 tp-ref_count=3
+ ${resp} Wait Until Keyword Succeeds
+ ... 3x
+ ... 1s
+ ... Output Topo Should Be Complete
+ ... node_count=5
+ ... supporting-node_count=5
+ ... node-ref_count=5
+ ... tp_count=3
+ ... tp-ref_count=3
Check Filtered Termination Points in Node ${resp.content} of-node:1
Check Filtered Termination Points in Node ${resp.content} of-node:2 tp:2:2
Check Filtered Termination Points in Node ${resp.content} of-node:3 tp:3:1 tp:3:2
Filtration Specific String Network Topology Model
[Documentation] Test of specific string type of filtration operation on Network Topology model
- ${request} Prepare Filtration Topology Request ${FILTRATION_NT} network-topology-model termination-point network-topo:2
+ ${request} Prepare Filtration Topology Request
+ ... ${FILTRATION_NT}
+ ... network-topology-model
+ ... termination-point
+ ... network-topo:2
${request} Insert Filter ${request} ${FILTER_SPECIFIC_STRING} ${OVSDB_TP_NAME}
${request} Set Specific String Filter ${request} portC
Basic Request Put ${request} ${OVERLAY_TOPO_URL}
- ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=5 supporting-node_count=5
- ... node-ref_count=5 tp_count=1 tp-ref_count=1
+ ${resp} Wait Until Keyword Succeeds
+ ... 3x
+ ... 1s
+ ... Output Topo Should Be Complete
+ ... node_count=5
+ ... supporting-node_count=5
+ ... node-ref_count=5
+ ... tp_count=1
+ ... tp-ref_count=1
Check Filtered Termination Points in Node ${resp.content} bgp:6
Check Filtered Termination Points in Node ${resp.content} bgp:7 tp:7:2
Check Filtered Termination Points in Node ${resp.content} bgp:8
Filtration Specific String Inventory Model
[Documentation] Test of specific string type of filtration operation on Inventory model
- ${request} Prepare Filtration Topology Request ${FILTRATION_NT} opendaylight-inventory-model termination-point openflow-topo:1
+ ${request} Prepare Filtration Topology Request
+ ... ${FILTRATION_NT}
+ ... opendaylight-inventory-model
+ ... termination-point
+ ... openflow-topo:1
${request} Insert Filter ${request} ${FILTER_SPECIFIC_STRING} ${OPENFLOW_NODE_CONNECTOR_NAME}
${request} Set Specific String Filter ${request} portB
Basic Request Put ${request} ${OVERLAY_TOPO_URL}
- ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=5 supporting-node_count=5
- ... node-ref_count=5 tp_count=2 tp-ref_count=2
+ ${resp} Wait Until Keyword Succeeds
+ ... 3x
+ ... 1s
+ ... Output Topo Should Be Complete
+ ... node_count=5
+ ... supporting-node_count=5
+ ... node-ref_count=5
+ ... tp_count=2
+ ... tp-ref_count=2
Check Filtered Termination Points in Node ${resp.content} of-node:1
Check Filtered Termination Points in Node ${resp.content} of-node:2 tp:2:1
Check Filtered Termination Points in Node ${resp.content} of-node:3
Filtration Range String Network Topology Model
[Documentation] Test of range string type of filtration operation on Network Topology model
- ${request} Prepare Filtration Topology Request ${FILTRATION_NT} network-topology-model termination-point network-topo:2
+ ${request} Prepare Filtration Topology Request
+ ... ${FILTRATION_NT}
+ ... network-topology-model
+ ... termination-point
+ ... network-topo:2
${request} Insert Filter ${request} ${FILTER_RANGE_STRING} ${OVSDB_TP_NAME}
${request} Set Range String Filter ${request} portA portC
Basic Request Put ${request} ${OVERLAY_TOPO_URL}
- ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=5 supporting-node_count=5
- ... node-ref_count=5 tp_count=3 tp-ref_count=3
+ ${resp} Wait Until Keyword Succeeds
+ ... 3x
+ ... 1s
+ ... Output Topo Should Be Complete
+ ... node_count=5
+ ... supporting-node_count=5
+ ... node-ref_count=5
+ ... tp_count=3
+ ... tp-ref_count=3
Check Filtered Termination Points in Node ${resp.content} bgp:6 tp:6:1
Check Filtered Termination Points in Node ${resp.content} bgp:7 tp:7:2
Check Filtered Termination Points in Node ${resp.content} bgp:8
Filtration Range String Inventory Model
[Documentation] Test of range string type of filtration operation on Inventory model
- ${request} Prepare Filtration Topology Request ${FILTRATION_NT} opendaylight-inventory-model termination-point openflow-topo:1
+ ${request} Prepare Filtration Topology Request
+ ... ${FILTRATION_NT}
+ ... opendaylight-inventory-model
+ ... termination-point
+ ... openflow-topo:1
${request} Insert Filter ${request} ${FILTER_RANGE_STRING} ${OPENFLOW_NODE_CONNECTOR_NAME}
${request} Set Range String Filter ${request} portA portB
Basic Request Put ${request} ${OVERLAY_TOPO_URL}
- ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=5 supporting-node_count=5
- ... node-ref_count=5 tp_count=3 tp-ref_count=3
+ ${resp} Wait Until Keyword Succeeds
+ ... 3x
+ ... 1s
+ ... Output Topo Should Be Complete
+ ... node_count=5
+ ... supporting-node_count=5
+ ... node-ref_count=5
+ ... tp_count=3
+ ... tp-ref_count=3
Check Filtered Termination Points in Node ${resp.content} of-node:1
Check Filtered Termination Points in Node ${resp.content} of-node:2 tp:2:1 tp:2:3
Check Filtered Termination Points in Node ${resp.content} of-node:3
Filtration Script Network Topology Model
[Documentation] Test of script type of filtration operation on Network Topology model
- ${request} Prepare Filtration Topology Request ${FILTRATION_NT} network-topology-model termination-point network-topo:1
+ ${request} Prepare Filtration Topology Request
+ ... ${FILTRATION_NT}
+ ... network-topology-model
+ ... termination-point
+ ... network-topo:1
${request} Insert Filter ${request} ${FILTER_SCRIPT} ${OVSDB_OFPORT}
- ${script} Set Variable if (node.getValue() > 1117 ) {filterOut.setResult(true);} else {filterOut.setResult(false);}
+ ${script} Set Variable
+ ... if (node.getValue() > 1117 ) {filterOut.setResult(true);} else {filterOut.setResult(false);}
${request} Set Script Filter ${request} javascript ${script}
Basic Request Put ${request} ${OVERLAY_TOPO_URL}
- ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=5 supporting-node_count=5
- ... node-ref_count=5 tp_count=3 tp-ref_count=3
+ ${resp} Wait Until Keyword Succeeds
+ ... 3x
+ ... 1s
+ ... Output Topo Should Be Complete
+ ... node_count=5
+ ... supporting-node_count=5
+ ... node-ref_count=5
+ ... tp_count=3
+ ... tp-ref_count=3
Check Filtered Termination Points in Node ${resp.content} bgp:1
Check Filtered Termination Points in Node ${resp.content} bgp:2
Check Filtered Termination Points in Node ${resp.content} bgp:3
Filtration Script Inventory Model
[Documentation] Test of script type of filtration operation on Inventory model
- ${request} Prepare Filtration Topology Request ${FILTRATION_NT} opendaylight-inventory-model termination-point openflow-topo:1
+ ${request} Prepare Filtration Topology Request
+ ... ${FILTRATION_NT}
+ ... opendaylight-inventory-model
+ ... termination-point
+ ... openflow-topo:1
${request} Insert Filter ${request} ${FILTER_SCRIPT} ${OPENFLOW_NODE_CONNECTOR_NAME}
- ${script} Set Variable if (node.getValue().indexOf("portB") > -1 ) {filterOut.setResult(true);} else {filterOut.setResult(false);}
+ ${script} Set Variable
+ ... if (node.getValue().indexOf("portB") > -1 ) {filterOut.setResult(true);} else {filterOut.setResult(false);}
${request} Set Script Filter ${request} javascript ${script}
Basic Request Put ${request} ${OVERLAY_TOPO_URL}
- ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=5 supporting-node_count=5
- ... node-ref_count=5 tp_count=3 tp-ref_count=3
+ ${resp} Wait Until Keyword Succeeds
+ ... 3x
+ ... 1s
+ ... Output Topo Should Be Complete
+ ... node_count=5
+ ... supporting-node_count=5
+ ... node-ref_count=5
+ ... tp_count=3
+ ... tp-ref_count=3
Check Filtered Termination Points in Node ${resp.content} of-node:1 tp:1:1
Check Filtered Termination Points in Node ${resp.content} of-node:2 tp:2:2 tp:2:3
Check Filtered Termination Points in Node ${resp.content} of-node:3
*** Settings ***
-Documentation Test suite to verify fitration operation on different models.
-... Before test starts, configurational file have to be rewriten to change listners registration datastore type from CONFIGURATION to OPERATIONAL.
-... Need for this change is also a reason why main feature (odl-topoprocessing-framework) is installed after file change and not during boot.
-... Tests themselves install feature required for specific model, clear karaf logs for futher synchronization, send configurational xmls and verify output.
-... Topology-id on the end of each urls must match topology-id from xml. Yang models of components in topology are defined in xmls.
-Suite Setup Setup Environment
-Suite Teardown Clean Environment
-Test Setup SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
-Test Teardown Delete Overlay Topology
-Library RequestsLibrary
-Library SSHLibrary
-Library XML
-Variables ../../../variables/topoprocessing/TopologyRequests.py
-Variables ../../../variables/topoprocessing/TargetFields.py
-Variables ../../../variables/Variables.py
-Resource ../../../libraries/KarafKeywords.robot
-Resource ../../../libraries/Utils.robot
-Resource ../../../libraries/TopoprocessingKeywords.robot
+Documentation Test suite to verify fitration operation on different models.
+... Before test starts, configurational file have to be rewriten to change listners registration datastore type from CONFIGURATION to OPERATIONAL.
+... Need for this change is also a reason why main feature (odl-topoprocessing-framework) is installed after file change and not during boot.
+... Tests themselves install feature required for specific model, clear karaf logs for futher synchronization, send configurational xmls and verify output.
+... Topology-id on the end of each urls must match topology-id from xml. Yang models of components in topology are defined in xmls.
+
+Library RequestsLibrary
+Library SSHLibrary
+Library XML
+Variables ../../../variables/topoprocessing/TopologyRequests.py
+Variables ../../../variables/topoprocessing/TargetFields.py
+Variables ../../../variables/Variables.py
+Resource ../../../libraries/KarafKeywords.robot
+Resource ../../../libraries/Utils.robot
+Resource ../../../libraries/TopoprocessingKeywords.robot
+
+Suite Setup Setup Environment
+Suite Teardown Clean Environment
+Test Setup SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
+Test Teardown Delete Overlay Topology
+
*** Test Cases ***
Filtration Range Number Network Topology Model
[Documentation] Test of range number type of filtration operation on Network Topology model
- ${request} Prepare Filtration Topology Request ${FILTRATION_NT} network-topology-model link network-topo:1
+ ${request} Prepare Filtration Topology Request
+ ... ${FILTRATION_NT}
+ ... network-topology-model
+ ... link
+ ... network-topo:1
${request} Insert Filter ${request} ${FILTER_RANGE_NUMBER} ${IGP_LINK_METRIC}
${request} Set Range Number Filter ${request} 11 13
Basic Request Put ${request} ${OVERLAY_TOPO_URL}
- ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete link_count=3 link-ref_count=3
+ ${resp} Wait Until Keyword Succeeds
+ ... 3x
+ ... 1s
+ ... Output Topo Should Be Complete
+ ... link_count=3
+ ... link-ref_count=3
Check Filtered Links In Topology ${resp.content} link:1:2-1 link:1:3 link:1:4
Filtration Range Number Inventory Model
[Documentation] Test of range number type of filtration operation on Inventory model
- ${request} Prepare Filtration Topology Request ${FILTRATION_NT} opendaylight-inventory-model link openflow-topo:3
+ ${request} Prepare Filtration Topology Request
+ ... ${FILTRATION_NT}
+ ... opendaylight-inventory-model
+ ... link
+ ... openflow-topo:3
${request} Insert Filter ${request} ${FILTER_RANGE_NUMBER} ${IGP_LINK_METRIC}
${request} Set Range Number Filter ${request} 14 15
Basic Request Put ${request} ${OVERLAY_TOPO_URL}
- ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete link_count=2 link-ref_count=2
+ ${resp} Wait Until Keyword Succeeds
+ ... 3x
+ ... 1s
+ ... Output Topo Should Be Complete
+ ... link_count=2
+ ... link-ref_count=2
Check Filtered Links In Topology ${resp.content} link:14:12 link:15:13
Filtration Specific String Network Topology Model
[Documentation] Test of specific string type of filtration operation on Network Topology model
- ${request} Prepare Filtration Topology Request ${FILTRATION_NT} network-topology-model link network-topo:1
+ ${request} Prepare Filtration Topology Request
+ ... ${FILTRATION_NT}
+ ... network-topology-model
+ ... link
+ ... network-topo:1
${request} Insert Filter ${request} ${FILTER_SPECIFIC_STRING} ${IGP_LINK_NAME}
${request} Set Specific String Filter ${request} linkA
Basic Request Put ${request} ${OVERLAY_TOPO_URL}
- ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete link_count=2 link-ref_count=2
+ ${resp} Wait Until Keyword Succeeds
+ ... 3x
+ ... 1s
+ ... Output Topo Should Be Complete
+ ... link_count=2
+ ... link-ref_count=2
Check Filtered Links In Topology ${resp.content} link:1:4 link:1:2-1
Filtration Specific String Inventory Model
[Documentation] Test of specific string type of filtration operation on Inventory model
- ${request} Prepare Filtration Topology Request ${FILTRATION_NT} opendaylight-inventory-model link openflow-topo:3
+ ${request} Prepare Filtration Topology Request
+ ... ${FILTRATION_NT}
+ ... opendaylight-inventory-model
+ ... link
+ ... openflow-topo:3
${request} Insert Filter ${request} ${FILTER_SPECIFIC_STRING} ${IGP_LINK_NAME}
${request} Set Specific String Filter ${request} linkD
Basic Request Put ${request} ${OVERLAY_TOPO_URL}
- ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete link_count=1 link-ref_count=1
+ ${resp} Wait Until Keyword Succeeds
+ ... 3x
+ ... 1s
+ ... Output Topo Should Be Complete
+ ... link_count=1
+ ... link-ref_count=1
Check Filtered Links In Topology ${resp.content} link:15:13
Filtration Range String Network Topology Model
[Documentation] Test of range string type of filtration operation on Network Topology model
- ${request} Prepare Filtration Topology Request ${FILTRATION_NT} network-topology-model link network-topo:1
+ ${request} Prepare Filtration Topology Request
+ ... ${FILTRATION_NT}
+ ... network-topology-model
+ ... link
+ ... network-topo:1
${request} Insert Filter ${request} ${FILTER_RANGE_STRING} ${IGP_LINK_NAME}
${request} Set Range String Filter ${request} linkA linkB
Basic Request Put ${request} ${OVERLAY_TOPO_URL}
- ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete link_count=3 link-ref_count=3
+ ${resp} Wait Until Keyword Succeeds
+ ... 3x
+ ... 1s
+ ... Output Topo Should Be Complete
+ ... link_count=3
+ ... link-ref_count=3
Check Filtered Links In Topology ${resp.content} link:1:2-1 link:1:3 link:1:4
Filtration Range String Inventory Model
[Documentation] Test of range string type of filtration operation on Inventory model
- ${request} Prepare Filtration Topology Request ${FILTRATION_NT} opendaylight-inventory-model link openflow-topo:3
+ ${request} Prepare Filtration Topology Request
+ ... ${FILTRATION_NT}
+ ... opendaylight-inventory-model
+ ... link
+ ... openflow-topo:3
${request} Insert Filter ${request} ${FILTER_RANGE_STRING} ${IGP_LINK_NAME}
${request} Set Range String Filter ${request} linkC linkD
Basic Request Put ${request} ${OVERLAY_TOPO_URL}
- ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete link_count=2 link-ref_count=2
+ ${resp} Wait Until Keyword Succeeds
+ ... 3x
+ ... 1s
+ ... Output Topo Should Be Complete
+ ... link_count=2
+ ... link-ref_count=2
Check Filtered Links In Topology ${resp.content} link:14:12 link:15:13
Filtration Script Network Topology Model
[Documentation] Test of script type of filtration operation on Network Topology model
- ${request} Prepare Filtration Topology Request ${FILTRATION_NT} network-topology-model link network-topo:1
+ ${request} Prepare Filtration Topology Request
+ ... ${FILTRATION_NT}
+ ... network-topology-model
+ ... link
+ ... network-topo:1
${request} Insert Filter ${request} ${FILTER_SCRIPT} ${IGP_LINK_NAME}
- ${script} Set Variable if (node.getValue().indexOf("linkA") > -1 ) {filterOut.setResult(true);} else {filterOut.setResult(false);}
+ ${script} Set Variable
+ ... if (node.getValue().indexOf("linkA") > -1 ) {filterOut.setResult(true);} else {filterOut.setResult(false);}
${request} Set Script Filter ${request} javascript ${script}
Basic Request Put ${request} ${OVERLAY_TOPO_URL}
- ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete link_count=2 link-ref_count=2
+ ${resp} Wait Until Keyword Succeeds
+ ... 3x
+ ... 1s
+ ... Output Topo Should Be Complete
+ ... link_count=2
+ ... link-ref_count=2
Check Filtered Links In Topology ${resp.content} link:1:2-2 link:1:3
Filtration Script Inventory Model
[Documentation] Test of script type of filtration operation on Inventory model
- ${request} Prepare Filtration Topology Request ${FILTRATION_NT} opendaylight-inventory-model link openflow-topo:3
+ ${request} Prepare Filtration Topology Request
+ ... ${FILTRATION_NT}
+ ... opendaylight-inventory-model
+ ... link
+ ... openflow-topo:3
${request} Insert Filter ${request} ${FILTER_SCRIPT} ${IGP_LINK_NAME}
- ${script} Set Variable if (node.getValue().indexOf("linkA") > -1 ) {filterOut.setResult(true);} else {filterOut.setResult(false);}
+ ${script} Set Variable
+ ... if (node.getValue().indexOf("linkA") > -1 ) {filterOut.setResult(true);} else {filterOut.setResult(false);}
${request} Set Script Filter ${request} javascript ${script}
Basic Request Put ${request} ${OVERLAY_TOPO_URL}
- ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete link_count=3 link-ref_count=3
+ ${resp} Wait Until Keyword Succeeds
+ ... 3x
+ ... 1s
+ ... Output Topo Should Be Complete
+ ... link_count=3
+ ... link-ref_count=3
Check Filtered Links In Topology ${resp.content} link:11:12 link:14:12 link:15:13
*** Settings ***
-Documentation Test suite to verify fitration operation on different models.
-... Before test starts, configurational file have to be rewriten to change listners registration datastore type from CONFIGURATION to OPERATIONAL.
-... Need for this change is also a reason why main feature (odl-topoprocessing-framework) is installed after file change and not during boot.
-... Tests themselves install feature required for specific model, clear karaf logs for futher synchronization, send configurational xmls and verify output.
-... Topology-id on the end of each urls must match topology-id from xml. Yang models of components in topology are defined in xmls.
-Suite Setup Setup Environment
-Suite Teardown Clean Environment
-Test Setup SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
-Test Teardown Delete Overlay Topology
-Library RequestsLibrary
-Library SSHLibrary
-Library XML
-Variables ../../../variables/topoprocessing/TopologyRequests.py
-Variables ../../../variables/topoprocessing/TargetFields.py
-Variables ../../../variables/Variables.py
-Resource ../../../libraries/KarafKeywords.robot
-Resource ../../../libraries/Utils.robot
-Resource ../../../libraries/TopoprocessingKeywords.robot
+Documentation Test suite to verify fitration operation on different models.
+... Before test starts, configurational file have to be rewriten to change listners registration datastore type from CONFIGURATION to OPERATIONAL.
+... Need for this change is also a reason why main feature (odl-topoprocessing-framework) is installed after file change and not during boot.
+... Tests themselves install feature required for specific model, clear karaf logs for futher synchronization, send configurational xmls and verify output.
+... Topology-id on the end of each urls must match topology-id from xml. Yang models of components in topology are defined in xmls.
+
+Library RequestsLibrary
+Library SSHLibrary
+Library XML
+Variables ../../../variables/topoprocessing/TopologyRequests.py
+Variables ../../../variables/topoprocessing/TargetFields.py
+Variables ../../../variables/Variables.py
+Resource ../../../libraries/KarafKeywords.robot
+Resource ../../../libraries/Utils.robot
+Resource ../../../libraries/TopoprocessingKeywords.robot
+
+Suite Setup Setup Environment
+Suite Teardown Clean Environment
+Test Setup SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
+Test Teardown Delete Overlay Topology
+
*** Test Cases ***
Unification Filtration Node Inside Network Topology model
[Documentation] Test unification filtration inside operation on Network Topology model
${model} Set Variable network-topology-model
- ${request} Prepare Unification Filtration Inside Topology Request ${UNIFICATION_FILTRATION_NT_AGGREGATE_INSIDE} ${model} node ${ISIS_NODE_TE_ROUTER_ID_IPV4} network-topo:4
+ ${request} Prepare Unification Filtration Inside Topology Request
+ ... ${UNIFICATION_FILTRATION_NT_AGGREGATE_INSIDE}
+ ... ${model}
+ ... node
+ ... ${ISIS_NODE_TE_ROUTER_ID_IPV4}
+ ... network-topo:4
${request} Insert Filter With ID ${request} ${FILTER_IPV4} ${ISIS_NODE_TE_ROUTER_ID_IPV4} 1
${request} Insert Apply Filters ${request} 1 1
${request} Set IPV4 Filter ${request} 192.168.2.1/24
Basic Request Put ${request} ${OVERLAY_TOPO_URL}
- ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=2 supporting-node_count=3
- ... node-ref_count=3 tp_count=0 tp-ref_count=0
+ ${resp} Wait Until Keyword Succeeds
+ ... 3x
+ ... 1s
+ ... Output Topo Should Be Complete
+ ... node_count=2
+ ... supporting-node_count=3
+ ... node-ref_count=3
+ ... tp_count=0
+ ... tp-ref_count=0
Check Aggregated Node in Topology ${model} ${resp.content} 0 bgp:18 bgp:20
Check Aggregated Node in Topology ${model} ${resp.content} 0 bgp:19
Unification Filtration Node Inside Inventory model
[Documentation] Test unification filtration inside operation on Inventory model
${model} Set Variable opendaylight-inventory-model
- ${request} Prepare Unification Filtration Inside Topology Request ${UNIFICATION_FILTRATION_NT_AGGREGATE_INSIDE} ${model} node ${OPENFLOW_NODE_IP_ADDRESS} openflow-topo:4
+ ${request} Prepare Unification Filtration Inside Topology Request
+ ... ${UNIFICATION_FILTRATION_NT_AGGREGATE_INSIDE}
+ ... ${model}
+ ... node
+ ... ${OPENFLOW_NODE_IP_ADDRESS}
+ ... openflow-topo:4
${request} Insert Filter With ID ${request} ${FILTER_IPV4} ${OPENFLOW_NODE_IP_ADDRESS} 1
${request} Insert Apply Filters ${request} 1 1
${request} Set IPV4 Filter ${request} 192.168.2.1/24
Basic Request Put ${request} ${OVERLAY_TOPO_URL}
- ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=2 supporting-node_count=4
- ... node-ref_count=4 tp_count=0 tp-ref_count=0
+ ${resp} Wait Until Keyword Succeeds
+ ... 3x
+ ... 1s
+ ... Output Topo Should Be Complete
+ ... node_count=2
+ ... supporting-node_count=4
+ ... node-ref_count=4
+ ... tp_count=0
+ ... tp-ref_count=0
Check Aggregated Node in Topology ${model} ${resp.content} 0 of-node:18
Check Aggregated Node in Topology ${model} ${resp.content} 0 of-node:17 of-node:19 of-node:20
Unification Filtration Termination Point Inside Network Topology model
[Documentation] Test unification filtration inside operation on Network Topology model
${model} Set Variable network-topology-model
- ${request} Prepare Unification Filtration Inside Topology Request ${UNIFICATION_FILTRATION_NT_AGGREGATE_INSIDE} ${model} termination-point ${OVSDB_TP_NAME} network-topo:5
+ ${request} Prepare Unification Filtration Inside Topology Request
+ ... ${UNIFICATION_FILTRATION_NT_AGGREGATE_INSIDE}
+ ... ${model}
+ ... termination-point
+ ... ${OVSDB_TP_NAME}
+ ... network-topo:5
${request} Insert Filter With ID ${request} ${FILTER_SPECIFIC_STRING} ${OVSDB_TP_NAME} 1
${request} Insert Apply Filters ${request} 1 1
${request} Set Specific String Filter ${request} portA
Basic Request Put ${request} ${OVERLAY_TOPO_URL}
- ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=5 supporting-node_count=5
- ... node-ref_count=5 tp_count=3 tp-ref_count=6
+ ${resp} Wait Until Keyword Succeeds
+ ... 3x
+ ... 1s
+ ... Output Topo Should Be Complete
+ ... node_count=5
+ ... supporting-node_count=5
+ ... node-ref_count=5
+ ... tp_count=3
+ ... tp-ref_count=6
${topology_id} Set Variable network-topo:5
- Check Aggregated Termination Point in Node ${model} ${resp.content} ${topology_id} bgp:21 tp:21:1 tp:21:1
- ... tp:21:2 tp:21:3
- Check Aggregated Termination Point in Node ${model} ${resp.content} ${topology_id} bgp:24 tp:24:1 tp:24:1
+ Check Aggregated Termination Point in Node
+ ... ${model}
+ ... ${resp.content}
+ ... ${topology_id}
+ ... bgp:21
+ ... tp:21:1
+ ... tp:21:1
+ ... tp:21:2
+ ... tp:21:3
+ Check Aggregated Termination Point in Node
+ ... ${model}
+ ... ${resp.content}
+ ... ${topology_id}
+ ... bgp:24
+ ... tp:24:1
+ ... tp:24:1
... tp:24:2
- Check Aggregated Termination Point in Node ${model} ${resp.content} ${topology_id} bgp:22 tp:22:1 tp:22:1
+ Check Aggregated Termination Point in Node
+ ... ${model}
+ ... ${resp.content}
+ ... ${topology_id}
+ ... bgp:22
+ ... tp:22:1
+ ... tp:22:1
Unification Filtration Node Network Topology model
[Documentation] Test unification filtration operation on Network Topology model
${model} Set Variable network-topology-model
${target_field} Set Variable ${ISIS_NODE_TE_ROUTER_ID_IPV4}
- ${request} Prepare Unification Filtration Topology Request ${UNIFICATION_FILTRATION_NT} ${model} node ${target_field} network-topo:4
- ... ${target_field} network-topo:1
+ ${request} Prepare Unification Filtration Topology Request
+ ... ${UNIFICATION_FILTRATION_NT}
+ ... ${model}
+ ... node
+ ... ${target_field}
+ ... network-topo:4
+ ... ${target_field}
+ ... network-topo:1
${request} Insert Filter With ID ${request} ${FILTER_IPV4} ${ISIS_NODE_TE_ROUTER_ID_IPV4} 1
${request} Insert Apply Filters ${request} 1 1
${request} Insert Apply Filters ${request} 2 1
${request} Set IPV4 Filter ${request} 192.168.1.1/24
Basic Request Put ${request} ${OVERLAY_TOPO_URL}
- ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=2 supporting-node_count=4
- ... node-ref_count=4 tp_count=3 tp-ref_count=3
+ ${resp} Wait Until Keyword Succeeds
+ ... 3x
+ ... 1s
+ ... Output Topo Should Be Complete
+ ... node_count=2
+ ... supporting-node_count=4
+ ... node-ref_count=4
+ ... tp_count=3
+ ... tp-ref_count=3
Check Aggregated Node in Topology ${model} ${resp.content} 3 bgp:1 bgp:16
Check Aggregated Node in Topology ${model} ${resp.content} 0 bgp:2 bgp:17
Unification Filtration Node Inventory model
[Documentation] Test unification filtration operation on Inventory model
${model} Set Variable opendaylight-inventory-model
- ${request} Prepare Unification Filtration Topology Request ${UNIFICATION_FILTRATION_NT} ${model} node ${OPENFLOW_NODE_IP_ADDRESS} openflow-topo:4
- ... ${OPENFLOW_NODE_IP_ADDRESS} openflow-topo:6
+ ${request} Prepare Unification Filtration Topology Request
+ ... ${UNIFICATION_FILTRATION_NT}
+ ... ${model}
+ ... node
+ ... ${OPENFLOW_NODE_IP_ADDRESS}
+ ... openflow-topo:4
+ ... ${OPENFLOW_NODE_IP_ADDRESS}
+ ... openflow-topo:6
${request} Insert Filter With ID ${request} ${FILTER_IPV4} ${OPENFLOW_NODE_IP_ADDRESS} 1
${request} Insert Apply Filters ${request} 1 1
${request} Insert Apply Filters ${request} 2 1
${request} Set IPV4 Filter ${request} 192.168.1.1/24
Basic Request Put ${request} ${OVERLAY_TOPO_URL}
- ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=2 supporting-node_count=3
- ... node-ref_count=3 tp_count=0 tp-ref_count=0
+ ${resp} Wait Until Keyword Succeeds
+ ... 3x
+ ... 1s
+ ... Output Topo Should Be Complete
+ ... node_count=2
+ ... supporting-node_count=3
+ ... node-ref_count=3
+ ... tp_count=0
+ ... tp-ref_count=0
Check Aggregated Node in Topology ${model} ${resp.content} 0 of-node:28
Check Aggregated Node in Topology ${model} ${resp.content} 0 of-node:16 of-node:26
*** Settings ***
-Documentation Test suite to verify link computation operation on different models.
-... Before test starts, configurational file have to be rewriten to change listners registration datastore type from CONFIGURATION to OPERATIONAL.
-... Need for this change is also a reason why main feature (odl-topoprocessing-framework) is installed after file change and not during boot.
-... Tests themselves install feature required for specific model, clear karaf logs for futher synchronization, send configurational xmls and verify output.
-... Topology-id on the end of each urls must match topology-id from xml. Yang models of components in topology are defined in xmls.
-Suite Setup Setup Environment
-Suite Teardown Clean Environment
-Test Setup SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
-Test Teardown Delete Overlay Topology
-Library RequestsLibrary
-Library SSHLibrary
-Library XML
-Variables ../../../variables/topoprocessing/TopologyRequests.py
-Variables ../../../variables/topoprocessing/TargetFields.py
-Variables ../../../variables/Variables.py
-Resource ../../../libraries/KarafKeywords.robot
-Resource ../../../libraries/Utils.robot
-Resource ../../../libraries/TopoprocessingKeywords.robot
+Documentation Test suite to verify link computation operation on different models.
+... Before test starts, configurational file have to be rewriten to change listners registration datastore type from CONFIGURATION to OPERATIONAL.
+... Need for this change is also a reason why main feature (odl-topoprocessing-framework) is installed after file change and not during boot.
+... Tests themselves install feature required for specific model, clear karaf logs for futher synchronization, send configurational xmls and verify output.
+... Topology-id on the end of each urls must match topology-id from xml. Yang models of components in topology are defined in xmls.
+
+Library RequestsLibrary
+Library SSHLibrary
+Library XML
+Variables ../../../variables/topoprocessing/TopologyRequests.py
+Variables ../../../variables/topoprocessing/TargetFields.py
+Variables ../../../variables/Variables.py
+Resource ../../../libraries/KarafKeywords.robot
+Resource ../../../libraries/Utils.robot
+Resource ../../../libraries/TopoprocessingKeywords.robot
+
+Suite Setup Setup Environment
+Suite Teardown Clean Environment
+Test Setup SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
+Test Teardown Delete Overlay Topology
+
*** Test Cases ***
Link Computation Aggregation Inside
[Documentation] Test of link computation with unification inside on Network Topology model
${model} Set Variable network-topology-model
- ${request} Prepare Unification Inside Topology Request ${UNIFICATION_NT_AGGREGATE_INSIDE} ${model} node network-topo:6
+ ${request} Prepare Unification Inside Topology Request
+ ... ${UNIFICATION_NT_AGGREGATE_INSIDE}
+ ... ${model}
+ ... node
+ ... network-topo:6
${request} Insert Target Field ${request} 0 ${ISIS_NODE_TE_ROUTER_ID_IPV4} 0
- ${request} Insert Link Computation Inside ${request} ${LINK_COMPUTATION_INSIDE} n:network-topology-model network-topo:6
+ ${request} Insert Link Computation Inside
+ ... ${request}
+ ... ${LINK_COMPUTATION_INSIDE}
+ ... n:network-topology-model
+ ... network-topo:6
Basic Request Put ${request} ${OVERLAY_TOPO_URL}
- ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=4 supporting-node_count=5
- ... node-ref_count=5 link_count=4 link-ref_count=4
- ${overlay_node_id_28_29} Check Aggregated Node in Topology ${model} ${resp.content} 0 bgp:28 bgp:29
+ ${resp} Wait Until Keyword Succeeds
+ ... 3x
+ ... 1s
+ ... Output Topo Should Be Complete
+ ... node_count=4
+ ... supporting-node_count=5
+ ... node-ref_count=5
+ ... link_count=4
+ ... link-ref_count=4
+ ${overlay_node_id_28_29} Check Aggregated Node in Topology
+ ... ${model}
+ ... ${resp.content}
+ ... 0
+ ... bgp:28
+ ... bgp:29
${overlay_node_id_26} Check Aggregated Node in Topology ${model} ${resp.content} 0 bgp:26
${overlay_node_id_30} Check Aggregated Node in Topology ${model} ${resp.content} 0 bgp:30
${overlay_node_id_27} Check Aggregated Node in Topology ${model} ${resp.content} 0 bgp:27
${topology_id} Set Variable network-topo:6
- Check Overlay Link Source And Destination ${model} ${resp.content} ${topology_id} link:26:28 ${overlay_node_id_26} ${overlay_node_id_28_29}
- Check Overlay Link Source And Destination ${model} ${resp.content} ${topology_id} link:28:29 ${overlay_node_id_28_29} ${overlay_node_id_28_29}
- Check Overlay Link Source And Destination ${model} ${resp.content} ${topology_id} link:29:30-1 ${overlay_node_id_28_29} ${overlay_node_id_30}
- Check Overlay Link Source And Destination ${model} ${resp.content} ${topology_id} link:29:30-2 ${overlay_node_id_28_29} ${overlay_node_id_30}
+ Check Overlay Link Source And Destination
+ ... ${model}
+ ... ${resp.content}
+ ... ${topology_id}
+ ... link:26:28
+ ... ${overlay_node_id_26}
+ ... ${overlay_node_id_28_29}
+ Check Overlay Link Source And Destination
+ ... ${model}
+ ... ${resp.content}
+ ... ${topology_id}
+ ... link:28:29
+ ... ${overlay_node_id_28_29}
+ ... ${overlay_node_id_28_29}
+ Check Overlay Link Source And Destination
+ ... ${model}
+ ... ${resp.content}
+ ... ${topology_id}
+ ... link:29:30-1
+ ... ${overlay_node_id_28_29}
+ ... ${overlay_node_id_30}
+ Check Overlay Link Source And Destination
+ ... ${model}
+ ... ${resp.content}
+ ... ${topology_id}
+ ... link:29:30-2
+ ... ${overlay_node_id_28_29}
+ ... ${overlay_node_id_30}
Link Computation Filtration
[Documentation] Test of link computation with filtration on Network Topology model
${request} Prepare Filtration Topology Request ${FILTRATION_NT} ${model} node network-topo:6
${request} Insert Filter ${request} ${FILTER_IPV4} ${ISIS_NODE_TE_ROUTER_ID_IPV4}
${request} Set IPV4 Filter ${request} 192.168.2.1/32
- ${request} Insert Link Computation Inside ${request} ${LINK_COMPUTATION_INSIDE} n:network-topology-model network-topo:6
+ ${request} Insert Link Computation Inside
+ ... ${request}
+ ... ${LINK_COMPUTATION_INSIDE}
+ ... n:network-topology-model
+ ... network-topo:6
Basic Request Put ${request} ${OVERLAY_TOPO_URL}
- ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=2 supporting-node_count=2
- ... node-ref_count=2 link_count=1 link-ref_count=1
+ ${resp} Wait Until Keyword Succeeds
+ ... 3x
+ ... 1s
+ ... Output Topo Should Be Complete
+ ... node_count=2
+ ... supporting-node_count=2
+ ... node-ref_count=2
+ ... link_count=1
+ ... link-ref_count=1
${overlay_node_id_28} Check Aggregated Node in Topology ${model} ${resp.content} 0 bgp:28
${overlay_node_id_29} Check Aggregated Node in Topology ${model} ${resp.content} 0 bgp:29
- Check Overlay Link Source And Destination ${model} ${resp.content} network-topo:6 link:28:29 ${overlay_node_id_28} ${overlay_node_id_29}
+ Check Overlay Link Source And Destination
+ ... ${model}
+ ... ${resp.content}
+ ... network-topo:6
+ ... link:28:29
+ ... ${overlay_node_id_28}
+ ... ${overlay_node_id_29}
Link Computation Aggregation Filtration
[Documentation] Test of link computation with aggregation filtration on Network Topology model
${model} Set Variable network-topology-model
${target_field} Set Variable ${ISIS_NODE_TE_ROUTER_ID_IPV4}
- ${request} Prepare Unification Filtration Topology Request ${UNIFICATION_FILTRATION_NT} ${model} node ${target_field} network-topo:6
- ... ${target_field} network-topo:1
+ ${request} Prepare Unification Filtration Topology Request
+ ... ${UNIFICATION_FILTRATION_NT}
+ ... ${model}
+ ... node
+ ... ${target_field}
+ ... network-topo:6
+ ... ${target_field}
+ ... network-topo:1
${request} Insert Filter With ID ${request} ${FILTER_IPV4} ${ISIS_NODE_TE_ROUTER_ID_IPV4} 1
${request} Insert Apply Filters ${request} 1 1
${request} Insert Apply Filters ${request} 2 1
${request} Set IPV4 Filter ${request} 192.168.1.1/24
- ${request} Insert Link Computation ${request} ${LINK_COMPUTATION} n:network-topology-model network-topo:6 network-topo:1
+ ${request} Insert Link Computation
+ ... ${request}
+ ... ${LINK_COMPUTATION}
+ ... n:network-topology-model
+ ... network-topo:6
+ ... network-topo:1
Basic Request Put ${request} ${OVERLAY_TOPO_URL}
- ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=2 supporting-node_count=4
- ... node-ref_count=4 link_count=2 link-ref_count=2
+ ${resp} Wait Until Keyword Succeeds
+ ... 3x
+ ... 1s
+ ... Output Topo Should Be Complete
+ ... node_count=2
+ ... supporting-node_count=4
+ ... node-ref_count=4
+ ... link_count=2
+ ... link-ref_count=2
${overlay_node_id_1_26} Check Aggregated Node in Topology ${model} ${resp.content} 3 bgp:26 bgp:1
${overlay_node_id_2_27} Check Aggregated Node in Topology ${model} ${resp.content} 0 bgp:27 bgp:2
${topology_id} Set Variable network-topo:1
- Check Overlay Link Source And Destination ${model} ${resp.content} ${topology_id} link:1:2-1 ${overlay_node_id_1_26} ${overlay_node_id_2_27}
- Check Overlay Link Source And Destination ${model} ${resp.content} ${topology_id} link:1:2-2 ${overlay_node_id_1_26} ${overlay_node_id_2_27}
+ Check Overlay Link Source And Destination
+ ... ${model}
+ ... ${resp.content}
+ ... ${topology_id}
+ ... link:1:2-1
+ ... ${overlay_node_id_1_26}
+ ... ${overlay_node_id_2_27}
+ Check Overlay Link Source And Destination
+ ... ${model}
+ ... ${resp.content}
+ ... ${topology_id}
+ ... link:1:2-2
+ ... ${overlay_node_id_1_26}
+ ... ${overlay_node_id_2_27}
*** Settings ***
-Documentation Test suite to verify update behaviour during different topoprocessing operations on NT and inventory models.
-... Before test starts, configurational file have to be rewriten to change listners registration datastore type from CONFIG_API to OPERATIONAL_API.
-... Need for this change is also a reason why main feature (odl-topoprocessing-framework) is installed after file change and not during boot.
-... Suite setup also installs features required for tested models and clears karaf logs for further synchronization. Tests themselves send configurational
-... xmls and verify output. Topology-id on the end of each urls must match topology-id from xml. Yang models of components in topology are defined in xmls.
-Suite Setup Setup Environment
-Suite Teardown Clean Environment
-Test Setup SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
-Test Teardown Refresh Underlay Topologies And Delete Overlay Topology
-Library RequestsLibrary
-Library SSHLibrary
-Library XML
-Variables ../../../variables/topoprocessing/TopologyRequests.py
-Variables ../../../variables/topoprocessing/TargetFields.py
-Variables ../../../variables/Variables.py
-Resource ../../../libraries/KarafKeywords.robot
-Resource ../../../libraries/Utils.robot
-Resource ../../../libraries/TopoprocessingKeywords.robot
+Documentation Test suite to verify update behaviour during different topoprocessing operations on NT and inventory models.
+... Before test starts, configurational file have to be rewriten to change listners registration datastore type from CONFIG_API to OPERATIONAL_API.
+... Need for this change is also a reason why main feature (odl-topoprocessing-framework) is installed after file change and not during boot.
+... Suite setup also installs features required for tested models and clears karaf logs for further synchronization. Tests themselves send configurational
+... xmls and verify output. Topology-id on the end of each urls must match topology-id from xml. Yang models of components in topology are defined in xmls.
+
+Library RequestsLibrary
+Library SSHLibrary
+Library XML
+Variables ../../../variables/topoprocessing/TopologyRequests.py
+Variables ../../../variables/topoprocessing/TargetFields.py
+Variables ../../../variables/Variables.py
+Resource ../../../libraries/KarafKeywords.robot
+Resource ../../../libraries/Utils.robot
+Resource ../../../libraries/TopoprocessingKeywords.robot
+
+Suite Setup Setup Environment
+Suite Teardown Clean Environment
+Test Setup SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
+Test Teardown Refresh Underlay Topologies And Delete Overlay Topology
+
*** Test Cases ***
Unification Node Update
[Documentation] Test processing of updates using unification operation on Network Topology model
#Create the original topology
${model} Set Variable network-topology-model
- ${request} Prepare Unification Topology Request ${UNIFICATION_NT} ${model} node network-topo:1 network-topo:2
+ ${request} Prepare Unification Topology Request
+ ... ${UNIFICATION_NT}
+ ... ${model}
+ ... node
+ ... network-topo:1
+ ... network-topo:2
${request} Insert Target Field ${request} 0 ${ISIS_NODE_TE_ROUTER_ID_IPV4} 0
${request} Insert Target Field ${request} 1 ${ISIS_NODE_TE_ROUTER_ID_IPV4} 0
Basic Request Put ${request} ${OVERLAY_TOPO_URL}
- ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=8 supporting-node_count=10
- ... tp_count=14 tp-ref_count=14
+ ${resp} Wait Until Keyword Succeeds
+ ... 3x
+ ... 1s
+ ... Output Topo Should Be Complete
+ ... node_count=8
+ ... supporting-node_count=10
+ ... tp_count=14
+ ... tp-ref_count=14
#Update a node, expecting a unification of two nodes into one
${node} Create Isis Node bgp:1 router-id-ipv4=192.168.1.2
Basic Request Put ${node} network-topology:network-topology/topology/network-topo:1/node/bgp:1
- ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=7 supporting-node_count=10
- ... tp_count=11 tp-ref_count=11
+ ${resp} Wait Until Keyword Succeeds
+ ... 3x
+ ... 1s
+ ... Output Topo Should Be Complete
+ ... node_count=7
+ ... supporting-node_count=10
+ ... tp_count=11
+ ... tp-ref_count=11
FOR ${index} IN RANGE 1 11
Should Contain X Times ${resp.content} <node-ref>bgp:${index}</node-ref> 1
END
#Update a unified node, expecting creation of a new overlay node
${node} Create Isis Node bgp:3 router-id-ipv4=192.168.3.1
Basic Request Put ${node} network-topology:network-topology/topology/network-topo:1/node/bgp:3
- ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=8 supporting-node_count=10
- ... tp_count=9 tp-ref_count=9
+ ${resp} Wait Until Keyword Succeeds
+ ... 3x
+ ... 1s
+ ... Output Topo Should Be Complete
+ ... node_count=8
+ ... supporting-node_count=10
+ ... tp_count=9
+ ... tp-ref_count=9
FOR ${index} IN RANGE 1 11
Should Contain X Times ${resp.content} <node-ref>bgp:${index}</node-ref> 1
END
Unification Node Inventory
[Documentation] Test processing of updates using unification operation on Inventory model
${model} Set Variable opendaylight-inventory-model
- ${request} Prepare Unification Topology Request ${UNIFICATION_NT} ${model} node openflow-topo:1 openflow-topo:2
+ ${request} Prepare Unification Topology Request
+ ... ${UNIFICATION_NT}
+ ... ${model}
+ ... node
+ ... openflow-topo:1
+ ... openflow-topo:2
${request} Insert Target Field ${request} 0 ${OPENFLOW_NODE_IP_ADDRESS} 0
${request} Insert Target Field ${request} 1 ${OPENFLOW_NODE_IP_ADDRESS} 0
Basic Request Put ${request} ${OVERLAY_TOPO_URL}
- ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=7 supporting-node_count=10
- ... tp_count=12 tp-ref_count=12
+ ${resp} Wait Until Keyword Succeeds
+ ... 3x
+ ... 1s
+ ... Output Topo Should Be Complete
+ ... node_count=7
+ ... supporting-node_count=10
+ ... tp_count=12
+ ... tp-ref_count=12
#Update a node, expecting unification of two nodes into one
${node} Create Openflow Node openflow:2 192.168.1.1
Basic Request Put ${node} opendaylight-inventory:nodes/node/openflow:2
- ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=6 supporting-node_count=10
- ... tp_count=12 tp-ref_count=12
+ ${resp} Wait Until Keyword Succeeds
+ ... 3x
+ ... 1s
+ ... Output Topo Should Be Complete
+ ... node_count=6
+ ... supporting-node_count=10
+ ... tp_count=12
+ ... tp-ref_count=12
FOR ${index} IN RANGE 1 11
Should Contain X Times ${resp.content} <node-ref>of-node:${index}</node-ref> 1
END
#Update a unified node, expecting creation of a new overlay node
${node} Create Openflow Node openflow:4 192.168.3.1
Basic Request Put ${node} opendaylight-inventory:nodes/node/openflow:4
- ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=7 supporting-node_count=10
- ... tp_count=12 tp-ref_count=12
+ ${resp} Wait Until Keyword Succeeds
+ ... 3x
+ ... 1s
+ ... Output Topo Should Be Complete
+ ... node_count=7
+ ... supporting-node_count=10
+ ... tp_count=12
+ ... tp-ref_count=12
FOR ${index} IN RANGE 1 11
Should Contain X Times ${resp.content} <node-ref>of-node:${index}</node-ref> 1
END
${request} Insert Filter ${request} ${FILTER_RANGE_NUMBER} ${OVSDB_OVS_VERSION}
${request} Set Range Number Filter ${request} 20 25
Basic Request Put ${request} ${OVERLAY_TOPO_URL}
- ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=4 supporting-node_count=4
- ... node-ref_count=4 tp_count=5 tp-ref_count=5
+ ${resp} Wait Until Keyword Succeeds
+ ... 3x
+ ... 1s
+ ... Output Topo Should Be Complete
+ ... node_count=4
+ ... supporting-node_count=4
+ ... node-ref_count=4
+ ... tp_count=5
+ ... tp-ref_count=5
${request} Create Isis Node bgp:7 17
Basic Request Put ${request} network-topology:network-topology/topology/network-topo:2/node/bgp:7
- ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=3 supporting-node_count=3
- ... node-ref_count=3 tp_count=3 tp-ref_count=3
+ ${resp} Wait Until Keyword Succeeds
+ ... 3x
+ ... 1s
+ ... Output Topo Should Be Complete
+ ... node_count=3
+ ... supporting-node_count=3
+ ... node-ref_count=3
+ ... tp_count=3
+ ... tp-ref_count=3
FOR ${index} IN RANGE 8 11
Should Contain X Times ${resp.content} <node-ref>bgp:${index}</node-ref> 1
END
Should Not Contain ${resp.content} <node-ref>bgp:7</node-ref>
${topology_id} Set Variable network-topo:2
- Check Aggregated Termination Point in Node ${model} ${resp.content} ${topology_id} bgp:8 tp:8:1 tp:8:1
- Check Aggregated Termination Point in Node ${model} ${resp.content} ${topology_id} bgp:9 tp:9:1 tp:9:1
- Check Aggregated Termination Point in Node ${model} ${resp.content} ${topology_id} bgp:10 tp:10:1 tp:10:1
+ Check Aggregated Termination Point in Node
+ ... ${model}
+ ... ${resp.content}
+ ... ${topology_id}
+ ... bgp:8
+ ... tp:8:1
+ ... tp:8:1
+ Check Aggregated Termination Point in Node
+ ... ${model}
+ ... ${resp.content}
+ ... ${topology_id}
+ ... bgp:9
+ ... tp:9:1
+ ... tp:9:1
+ Check Aggregated Termination Point in Node
+ ... ${model}
+ ... ${resp.content}
+ ... ${topology_id}
+ ... bgp:10
+ ... tp:10:1
+ ... tp:10:1
${request} Create Isis Node bgp:7 23
Basic Request Put ${request} network-topology:network-topology/topology/network-topo:2/node/bgp:7
- ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=4 supporting-node_count=4
- ... node-ref_count=4 tp_count=3 tp-ref_count=3
+ ${resp} Wait Until Keyword Succeeds
+ ... 3x
+ ... 1s
+ ... Output Topo Should Be Complete
+ ... node_count=4
+ ... supporting-node_count=4
+ ... node-ref_count=4
+ ... tp_count=3
+ ... tp-ref_count=3
${request} Create OVSDB Termination Point tp:7:1 1119
- Basic Request Put ${request} network-topology:network-topology/topology/network-topo:2/node/bgp:7/termination-point/tp:7:1
- ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=4 supporting-node_count=4
- ... node-ref_count=4 tp_count=4 tp-ref_count=4
+ Basic Request Put
+ ... ${request}
+ ... network-topology:network-topology/topology/network-topo:2/node/bgp:7/termination-point/tp:7:1
+ ${resp} Wait Until Keyword Succeeds
+ ... 3x
+ ... 1s
+ ... Output Topo Should Be Complete
+ ... node_count=4
+ ... supporting-node_count=4
+ ... node-ref_count=4
+ ... tp_count=4
+ ... tp-ref_count=4
FOR ${index} IN RANGE 7 11
Should Contain X Times ${resp.content} <node-ref>bgp:${index}</node-ref> 1
END
- Check Aggregated Termination Point in Node ${model} ${resp.content} ${topology_id} bgp:7 tp:7:1 tp:7:1
- Check Aggregated Termination Point in Node ${model} ${resp.content} ${topology_id} bgp:8 tp:8:1 tp:8:1
- Check Aggregated Termination Point in Node ${model} ${resp.content} ${topology_id} bgp:9 tp:9:1 tp:9:1
- Check Aggregated Termination Point in Node ${model} ${resp.content} ${topology_id} bgp:10 tp:10:1 tp:10:1
+ Check Aggregated Termination Point in Node
+ ... ${model}
+ ... ${resp.content}
+ ... ${topology_id}
+ ... bgp:7
+ ... tp:7:1
+ ... tp:7:1
+ Check Aggregated Termination Point in Node
+ ... ${model}
+ ... ${resp.content}
+ ... ${topology_id}
+ ... bgp:8
+ ... tp:8:1
+ ... tp:8:1
+ Check Aggregated Termination Point in Node
+ ... ${model}
+ ... ${resp.content}
+ ... ${topology_id}
+ ... bgp:9
+ ... tp:9:1
+ ... tp:9:1
+ Check Aggregated Termination Point in Node
+ ... ${model}
+ ... ${resp.content}
+ ... ${topology_id}
+ ... bgp:10
+ ... tp:10:1
+ ... tp:10:1
Filtration Range Number Node Update Inventory Model
- ${request} Prepare Filtration Topology Request ${FILTRATION_NT} opendaylight-inventory-model node openflow-topo:2
+ ${request} Prepare Filtration Topology Request
+ ... ${FILTRATION_NT}
+ ... opendaylight-inventory-model
+ ... node
+ ... openflow-topo:2
${request} Insert Filter ${request} ${FILTER_RANGE_NUMBER} ${OPENFLOW_NODE_SERIAL_NUMBER}
${request} Set Range Number Filter ${request} 20 25
Basic Request Put ${request} ${OVERLAY_TOPO_URL}
- ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=3 supporting-node_count=3
- ... node-ref_count=3 tp_count=0 tp-ref_count=0
+ ${resp} Wait Until Keyword Succeeds
+ ... 3x
+ ... 1s
+ ... Output Topo Should Be Complete
+ ... node_count=3
+ ... supporting-node_count=3
+ ... node-ref_count=3
+ ... tp_count=0
+ ... tp-ref_count=0
#Update a Node so it passes filtration
${request} Create Openflow Node openflow:7 192.168.2.3 23
Basic Request Put ${request} opendaylight-inventory:nodes/node/openflow:7
- ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=4 supporting-node_count=4
- ... node-ref_count=4 tp_count=0 tp-ref_count=0
+ ${resp} Wait Until Keyword Succeeds
+ ... 3x
+ ... 1s
+ ... Output Topo Should Be Complete
+ ... node_count=4
+ ... supporting-node_count=4
+ ... node-ref_count=4
+ ... tp_count=0
+ ... tp-ref_count=0
FOR ${index} IN RANGE 7 11
Should Contain X Times ${resp.content} <node-ref>of-node:${index}</node-ref> 1
#Update a Node so it is filtered out
END
${request} Create Openflow Node openflow:7 192.168.2.3 17
Basic Request Put ${request} opendaylight-inventory:nodes/node/openflow:7
- ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=3 supporting-node_count=3
- ... node-ref_count=3 tp_count=0 tp-ref_count=0
+ ${resp} Wait Until Keyword Succeeds
+ ... 3x
+ ... 1s
+ ... Output Topo Should Be Complete
+ ... node_count=3
+ ... supporting-node_count=3
+ ... node-ref_count=3
+ ... tp_count=0
+ ... tp-ref_count=0
FOR ${index} IN RANGE 8 11
Should Contain X Times ${resp.content} <node-ref>of-node:${index}</node-ref> 1
END
Filtration Range Number Termination Point Update NT
[Documentation] Test processing of updates using range number type of filtration operation on Network Topology model
${model} Set Variable network-topology-model
- ${request} Prepare Filtration Topology Request ${FILTRATION_NT} ${model} termination-point network-topo:2
+ ${request} Prepare Filtration Topology Request
+ ... ${FILTRATION_NT}
+ ... ${model}
+ ... termination-point
+ ... network-topo:2
${request} Insert Filter ${request} ${FILTER_RANGE_NUMBER} ${OVSDB_OFPORT}
${request} Set Range Number Filter ${request} 1115 1119
Basic Request Put ${request} ${OVERLAY_TOPO_URL}
- ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=5 supporting-node_count=5
- ... node-ref_count=5 tp_count=3 tp-ref_count=3
+ ${resp} Wait Until Keyword Succeeds
+ ... 3x
+ ... 1s
+ ... Output Topo Should Be Complete
+ ... node_count=5
+ ... supporting-node_count=5
+ ... node-ref_count=5
+ ... tp_count=3
+ ... tp-ref_count=3
#Update a previously out-of-range termination point, so it passes filtration
${terminationPoint} Create OVSDB Termination Point tp:8:1 1115
- Basic Request Put ${terminationPoint} network-topology:network-topology/topology/network-topo:2/node/bgp:8/termination-point/tp:8:1
- ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=5 supporting-node_count=5
- ... node-ref_count=5 tp_count=4 tp-ref_count=4
- Check Aggregated Termination Point in Node ${model} ${resp.content} network-topo:2 bgp:8 tp:8:1 tp:8:1
+ Basic Request Put
+ ... ${terminationPoint}
+ ... network-topology:network-topology/topology/network-topo:2/node/bgp:8/termination-point/tp:8:1
+ ${resp} Wait Until Keyword Succeeds
+ ... 3x
+ ... 1s
+ ... Output Topo Should Be Complete
+ ... node_count=5
+ ... supporting-node_count=5
+ ... node-ref_count=5
+ ... tp_count=4
+ ... tp-ref_count=4
+ Check Aggregated Termination Point in Node
+ ... ${model}
+ ... ${resp.content}
+ ... network-topo:2
+ ... bgp:8
+ ... tp:8:1
+ ... tp:8:1
#Update a previsouly in-range termination point, so it is filtered out
${terminationPoint} Create OVSDB Termination Point tp:7:2 1110
- Basic Request Put ${terminationPoint} network-topology:network-topology/topology/network-topo:2/node/bgp:7/termination-point/tp:7:2
- ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=5 supporting-node_count=5
- ... node-ref_count=5 tp_count=3 tp-ref_count=3
- Check Aggregated Termination Point in Node ${model} ${resp.content} network-topo:2 bgp:7 tp:7:1 tp:7:1
+ Basic Request Put
+ ... ${terminationPoint}
+ ... network-topology:network-topology/topology/network-topo:2/node/bgp:7/termination-point/tp:7:2
+ ${resp} Wait Until Keyword Succeeds
+ ... 3x
+ ... 1s
+ ... Output Topo Should Be Complete
+ ... node_count=5
+ ... supporting-node_count=5
+ ... node-ref_count=5
+ ... tp_count=3
+ ... tp-ref_count=3
+ Check Aggregated Termination Point in Node
+ ... ${model}
+ ... ${resp.content}
+ ... network-topo:2
+ ... bgp:7
+ ... tp:7:1
+ ... tp:7:1
Filtration Range Number Termination Point Update Inventory
[Documentation] Test processing of updates using range number type of filtration operation on Inventory model
${model} Set Variable opendaylight-inventory-model
- ${request} Prepare Filtration Topology Request ${FILTRATION_NT} ${model} termination-point openflow-topo:1
+ ${request} Prepare Filtration Topology Request
+ ... ${FILTRATION_NT}
+ ... ${model}
+ ... termination-point
+ ... openflow-topo:1
${request} Insert Filter ${request} ${FILTER_RANGE_NUMBER} ${OPENFLOW_NODE_CONNECTOR_PORT_NUMBER}
${request} Set Range Number Filter ${request} 2 4
Basic Request Put ${request} ${OVERLAY_TOPO_URL}
- ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=5 supporting-node_count=5
- ... node-ref_count=5 tp_count=5 tp-ref_count=5
+ ${resp} Wait Until Keyword Succeeds
+ ... 3x
+ ... 1s
+ ... Output Topo Should Be Complete
+ ... node_count=5
+ ... supporting-node_count=5
+ ... node-ref_count=5
+ ... tp_count=5
+ ... tp-ref_count=5
#Update a previously out-of-range termination point, so it passes filtration
${nodeConnector} Create Openflow Node Connector openflow:2:1 3
Basic Request Put ${nodeConnector} opendaylight-inventory:nodes/node/openflow:2/node-connector/openflow:2:1
- ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=5 supporting-node_count=5
- ... node-ref_count=5 tp_count=6 tp-ref_count=6
- Check Aggregated Termination Point in Node ${model} ${resp.content} openflow-topo:1 of-node:2 tp:2:1 tp:2:1
- Check Aggregated Termination Point in Node ${model} ${resp.content} openflow-topo:1 of-node:2 tp:2:2 tp:2:2
- Check Aggregated Termination Point in Node ${model} ${resp.content} openflow-topo:1 of-node:2 tp:2:3 tp:2:3
+ ${resp} Wait Until Keyword Succeeds
+ ... 3x
+ ... 1s
+ ... Output Topo Should Be Complete
+ ... node_count=5
+ ... supporting-node_count=5
+ ... node-ref_count=5
+ ... tp_count=6
+ ... tp-ref_count=6
+ Check Aggregated Termination Point in Node
+ ... ${model}
+ ... ${resp.content}
+ ... openflow-topo:1
+ ... of-node:2
+ ... tp:2:1
+ ... tp:2:1
+ Check Aggregated Termination Point in Node
+ ... ${model}
+ ... ${resp.content}
+ ... openflow-topo:1
+ ... of-node:2
+ ... tp:2:2
+ ... tp:2:2
+ Check Aggregated Termination Point in Node
+ ... ${model}
+ ... ${resp.content}
+ ... openflow-topo:1
+ ... of-node:2
+ ... tp:2:3
+ ... tp:2:3
#Update an in-range termination point, so it is filtered out
${nodeConnector} Create Openflow Node Connector openflow:3:2 5
Basic Request Put ${nodeConnector} opendaylight-inventory:nodes/node/openflow:3/node-connector/openflow:3:2
- ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=5 supporting-node_count=5
- ... node-ref_count=5 tp_count=5 tp-ref_count=5
- Check Aggregated Termination Point in Node ${model} ${resp.content} openflow-topo:1 of-node:3 tp:3:1 tp:3:1
+ ${resp} Wait Until Keyword Succeeds
+ ... 3x
+ ... 1s
+ ... Output Topo Should Be Complete
+ ... node_count=5
+ ... supporting-node_count=5
+ ... node-ref_count=5
+ ... tp_count=5
+ ... tp-ref_count=5
+ Check Aggregated Termination Point in Node
+ ... ${model}
+ ... ${resp.content}
+ ... openflow-topo:1
+ ... of-node:3
+ ... tp:3:1
+ ... tp:3:1
Filtration Range Number Link Update Network Topology Model
[Documentation] Tests the processing of link update requests when using a range-number filtration on NT model
- ${request} Prepare Filtration Topology Request ${FILTRATION_NT} network-topology-model link network-topo:1
+ ${request} Prepare Filtration Topology Request
+ ... ${FILTRATION_NT}
+ ... network-topology-model
+ ... link
+ ... network-topo:1
${request} Insert Filter ${request} ${FILTER_RANGE_NUMBER} ${IGP_LINK_METRIC}
${request} Set Range Number Filter ${request} 11 13
Basic Request Put ${request} ${OVERLAY_TOPO_URL}
- ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete link_count=3 link-ref_count=3
+ ${resp} Wait Until Keyword Succeeds
+ ... 3x
+ ... 1s
+ ... Output Topo Should Be Complete
+ ... link_count=3
+ ... link-ref_count=3
#Filter a link out
${request} Create Link link:1:4 bgp:1 bgp:4 linkA 15
Basic Request Put ${request} network-topology:network-topology/topology/network-topo:1/link/link:1:4
- ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete link_count=2 link-ref_count=2
- Should Contain X Times ${resp.content} <link-ref>/network-topology/topology/network-topo:1/link/link:1:3</link-ref> 1
- Should Contain X Times ${resp.content} <link-ref>/network-topology/topology/network-topo:1/link/link:1:2-1</link-ref> 1
+ ${resp} Wait Until Keyword Succeeds
+ ... 3x
+ ... 1s
+ ... Output Topo Should Be Complete
+ ... link_count=2
+ ... link-ref_count=2
+ Should Contain X Times
+ ... ${resp.content}
+ ... <link-ref>/network-topology/topology/network-topo:1/link/link:1:3</link-ref>
+ ... 1
+ Should Contain X Times
+ ... ${resp.content}
+ ... <link-ref>/network-topology/topology/network-topo:1/link/link:1:2-1</link-ref>
+ ... 1
Should Not Contain ${resp.content} network-topology/topology/network-topo:1/link/link:1:4
#Put the link back in
${request} Create Link link:1:4 bgp:1 bgp:4 linkA 12
Basic Request Put ${request} network-topology:network-topology/topology/network-topo:1/link/link:1:4
- ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete link_count=3 link-ref_count=3
- Should Contain X Times ${resp.content} <link-ref>/network-topology/topology/network-topo:1/link/link:1:4</link-ref> 1
- Should Contain X Times ${resp.content} <link-ref>/network-topology/topology/network-topo:1/link/link:1:3</link-ref> 1
- Should Contain X Times ${resp.content} <link-ref>/network-topology/topology/network-topo:1/link/link:1:2-1</link-ref> 1
+ ${resp} Wait Until Keyword Succeeds
+ ... 3x
+ ... 1s
+ ... Output Topo Should Be Complete
+ ... link_count=3
+ ... link-ref_count=3
+ Should Contain X Times
+ ... ${resp.content}
+ ... <link-ref>/network-topology/topology/network-topo:1/link/link:1:4</link-ref>
+ ... 1
+ Should Contain X Times
+ ... ${resp.content}
+ ... <link-ref>/network-topology/topology/network-topo:1/link/link:1:3</link-ref>
+ ... 1
+ Should Contain X Times
+ ... ${resp.content}
+ ... <link-ref>/network-topology/topology/network-topo:1/link/link:1:2-1</link-ref>
+ ... 1
Filtration Range Number Link Update Inventory Model
[Documentation] Tests the processing of link update requests when using a range-number filtration on Inventory model
- ${request} Prepare Filtration Topology Request ${FILTRATION_NT} opendaylight-inventory-model link openflow-topo:3
+ ${request} Prepare Filtration Topology Request
+ ... ${FILTRATION_NT}
+ ... opendaylight-inventory-model
+ ... link
+ ... openflow-topo:3
${request} Insert Filter ${request} ${FILTER_RANGE_NUMBER} ${IGP_LINK_METRIC}
${request} Set Range Number Filter ${request} 14 15
Basic Request Put ${request} ${OVERLAY_TOPO_URL}
- ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete link_count=2 link-ref_count=2
+ ${resp} Wait Until Keyword Succeeds
+ ... 3x
+ ... 1s
+ ... Output Topo Should Be Complete
+ ... link_count=2
+ ... link-ref_count=2
${request} Create Link link:11:12 of-node:11 of-node:12 linkB 14
Basic Request Put ${request} network-topology:network-topology/topology/openflow-topo:3/link/link:11:12
- ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete link_count=3 link-ref_count=3
- Should Contain X Times ${resp.content} <link-ref>/network-topology/topology/openflow-topo:3/link/link:14:12</link-ref> 1
- Should Contain X Times ${resp.content} <link-ref>/network-topology/topology/openflow-topo:3/link/link:15:13</link-ref> 1
- Should Contain X Times ${resp.content} <link-ref>/network-topology/topology/openflow-topo:3/link/link:11:12</link-ref> 1
+ ${resp} Wait Until Keyword Succeeds
+ ... 3x
+ ... 1s
+ ... Output Topo Should Be Complete
+ ... link_count=3
+ ... link-ref_count=3
+ Should Contain X Times
+ ... ${resp.content}
+ ... <link-ref>/network-topology/topology/openflow-topo:3/link/link:14:12</link-ref>
+ ... 1
+ Should Contain X Times
+ ... ${resp.content}
+ ... <link-ref>/network-topology/topology/openflow-topo:3/link/link:15:13</link-ref>
+ ... 1
+ Should Contain X Times
+ ... ${resp.content}
+ ... <link-ref>/network-topology/topology/openflow-topo:3/link/link:11:12</link-ref>
+ ... 1
${request} Create Link link:11:12 of-node:11 of-node:12 linkB 13
Basic Request Put ${request} network-topology:network-topology/topology/openflow-topo:3/link/link:11:12
- ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete link_count=2 link-ref_count=2
- Should Contain X Times ${resp.content} <link-ref>/network-topology/topology/openflow-topo:3/link/link:14:12</link-ref> 1
- Should Contain X Times ${resp.content} <link-ref>/network-topology/topology/openflow-topo:3/link/link:15:13</link-ref> 1
+ ${resp} Wait Until Keyword Succeeds
+ ... 3x
+ ... 1s
+ ... Output Topo Should Be Complete
+ ... link_count=2
+ ... link-ref_count=2
+ Should Contain X Times
+ ... ${resp.content}
+ ... <link-ref>/network-topology/topology/openflow-topo:3/link/link:14:12</link-ref>
+ ... 1
+ Should Contain X Times
+ ... ${resp.content}
+ ... <link-ref>/network-topology/topology/openflow-topo:3/link/link:15:13</link-ref>
+ ... 1
Unification Filtration Node Update Inside Network Topology model
${model} Set Variable network-topology-model
- ${request} Prepare Unification Filtration Inside Topology Request ${UNIFICATION_FILTRATION_NT_AGGREGATE_INSIDE} ${model} node ${ISIS_NODE_TE_ROUTER_ID_IPV4} network-topo:4
+ ${request} Prepare Unification Filtration Inside Topology Request
+ ... ${UNIFICATION_FILTRATION_NT_AGGREGATE_INSIDE}
+ ... ${model}
+ ... node
+ ... ${ISIS_NODE_TE_ROUTER_ID_IPV4}
+ ... network-topo:4
${request} Insert Filter With ID ${request} ${FILTER_IPV4} ${ISIS_NODE_TE_ROUTER_ID_IPV4} 1
${request} Insert Apply Filters ${request} 1 1
${request} Set IPV4 Filter ${request} 192.168.2.1/24
Basic Request Put ${request} ${OVERLAY_TOPO_URL}
- ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=2 supporting-node_count=3
- ... node-ref_count=3 tp_count=0 tp-ref_count=0
+ ${resp} Wait Until Keyword Succeeds
+ ... 3x
+ ... 1s
+ ... Output Topo Should Be Complete
+ ... node_count=2
+ ... supporting-node_count=3
+ ... node-ref_count=3
+ ... tp_count=0
+ ... tp-ref_count=0
${request} Create Isis Node bgp:17 10 192.168.2.1
Basic Request Put ${request} network-topology:network-topology/topology/network-topo:4/node/bgp:17
- ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=2 supporting-node_count=4
- ... node-ref_count=4 tp_count=0 tp-ref_count=0
+ ${resp} Wait Until Keyword Succeeds
+ ... 3x
+ ... 1s
+ ... Output Topo Should Be Complete
+ ... node_count=2
+ ... supporting-node_count=4
+ ... node-ref_count=4
+ ... tp_count=0
+ ... tp-ref_count=0
FOR ${index} IN RANGE 17 21
Should Contain X Times ${resp.content} <node-ref>bgp:${index}</node-ref> 1
END
Check Aggregated Node in Topology ${model} ${resp.content} 0 bgp:18 bgp:17 bgp:20
${request} Create Isis Node bgp:17 10 192.168.1.2
Basic Request Put ${request} network-topology:network-topology/topology/network-topo:4/node/bgp:17
- ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=2 supporting-node_count=3
- ... node-ref_count=3 tp_count=0 tp-ref_count=0
+ ${resp} Wait Until Keyword Succeeds
+ ... 3x
+ ... 1s
+ ... Output Topo Should Be Complete
+ ... node_count=2
+ ... supporting-node_count=3
+ ... node-ref_count=3
+ ... tp_count=0
+ ... tp-ref_count=0
FOR ${index} IN RANGE 18 21
Should Contain X Times ${resp.content} <node-ref>bgp:${index}</node-ref> 1
END
Unification Filtration Node Update Inside Inventory model
${model} Set Variable opendaylight-inventory-model
- ${request} Prepare Unification Filtration Inside Topology Request ${UNIFICATION_FILTRATION_NT_AGGREGATE_INSIDE} ${model} node ${OPENFLOW_NODE_IP_ADDRESS} openflow-topo:4
+ ${request} Prepare Unification Filtration Inside Topology Request
+ ... ${UNIFICATION_FILTRATION_NT_AGGREGATE_INSIDE}
+ ... ${model}
+ ... node
+ ... ${OPENFLOW_NODE_IP_ADDRESS}
+ ... openflow-topo:4
${request} Insert Filter With ID ${request} ${FILTER_IPV4} ${OPENFLOW_NODE_IP_ADDRESS} 1
${request} Insert Apply Filters ${request} 1 1
${request} Set IPV4 Filter ${request} 192.168.2.1/24
Basic Request Put ${request} ${OVERLAY_TOPO_URL}
- ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=2 supporting-node_count=4
- ... node-ref_count=4 tp_count=0 tp-ref_count=0
+ ${resp} Wait Until Keyword Succeeds
+ ... 3x
+ ... 1s
+ ... Output Topo Should Be Complete
+ ... node_count=2
+ ... supporting-node_count=4
+ ... node-ref_count=4
+ ... tp_count=0
+ ... tp-ref_count=0
${request} Create Openflow Node openflow:17 192.168.1.2
Basic Request Put ${request} opendaylight-inventory:nodes/node/openflow:17
- ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=2 supporting-node_count=3
- ... node-ref_count=3 tp_count=0 tp-ref_count=0
+ ${resp} Wait Until Keyword Succeeds
+ ... 3x
+ ... 1s
+ ... Output Topo Should Be Complete
+ ... node_count=2
+ ... supporting-node_count=3
+ ... node-ref_count=3
+ ... tp_count=0
+ ... tp-ref_count=0
FOR ${index} IN RANGE 18 21
Should Contain X Times ${resp.content} <node-ref>of-node:${index}</node-ref> 1
END
Should Not Contain ${node} <node-ref>of-node:17</node-ref>
${request} Create Openflow Node openflow:17 192.168.2.3
Basic Request Put ${request} opendaylight-inventory:nodes/node/openflow:17
- ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=2 supporting-node_count=4
- ... node-ref_count=4 tp_count=0 tp-ref_count=0
+ ${resp} Wait Until Keyword Succeeds
+ ... 3x
+ ... 1s
+ ... Output Topo Should Be Complete
+ ... node_count=2
+ ... supporting-node_count=4
+ ... node-ref_count=4
+ ... tp_count=0
+ ... tp-ref_count=0
FOR ${index} IN RANGE 17 21
Should Contain X Times ${resp.content} <node-ref>of-node:${index}</node-ref> 1
END
Link Computation Aggregation Inside Update NT
[Documentation] Test of link computation with unification type of aggregation inside on updated nodes from network-topology model
${model} Set Variable network-topology-model
- ${request} Prepare Unification Inside Topology Request ${UNIFICATION_NT_AGGREGATE_INSIDE} ${model} node network-topo:6
+ ${request} Prepare Unification Inside Topology Request
+ ... ${UNIFICATION_NT_AGGREGATE_INSIDE}
+ ... ${model}
+ ... node
+ ... network-topo:6
${request} Insert Target Field ${request} 0 ${ISIS_NODE_TE_ROUTER_ID_IPV4} 0
- ${request} Insert Link Computation Inside ${request} ${LINK_COMPUTATION_INSIDE} n:network-topology-model network-topo:6
+ ${request} Insert Link Computation Inside
+ ... ${request}
+ ... ${LINK_COMPUTATION_INSIDE}
+ ... n:network-topology-model
+ ... network-topo:6
Basic Request Put ${request} ${OVERLAY_TOPO_URL}
- ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=4 supporting-node_count=5
- ... node-ref_count=5 link_count=4 link-ref_count=4
+ ${resp} Wait Until Keyword Succeeds
+ ... 3x
+ ... 1s
+ ... Output Topo Should Be Complete
+ ... node_count=4
+ ... supporting-node_count=5
+ ... node-ref_count=5
+ ... link_count=4
+ ... link-ref_count=4
#Divide double nodes from overlay topology
${request} Create Isis Node bgp:29 router-id-ipv4=192.168.1.3
Basic Request Put ${request} network-topology:network-topology/topology/network-topo:6/node/bgp:29
- ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=5 supporting-node_count=5
- ... node-ref_count=5 link_count=4 link-ref_count=4
+ ${resp} Wait Until Keyword Succeeds
+ ... 3x
+ ... 1s
+ ... Output Topo Should Be Complete
+ ... node_count=5
+ ... supporting-node_count=5
+ ... node-ref_count=5
+ ... link_count=4
+ ... link-ref_count=4
${node_26} Check Aggregated Node in Topology ${model} ${resp.content} 0 bgp:26
${node_27} Check Aggregated Node in Topology ${model} ${resp.content} 0 bgp:27
${node_28} Check Aggregated Node in Topology ${model} ${resp.content} 0 bgp:28
${node_29} Check Aggregated Node in Topology ${model} ${resp.content} 0 bgp:29
${node_30} Check Aggregated Node in Topology ${model} ${resp.content} 0 bgp:30
${topo_id} Set Variable network-topo:6
- Check Overlay Link Source And Destination ${model} ${resp.content} ${topo_id} link:28:29 ${node_28} ${node_29}
- Check Overlay Link Source And Destination ${model} ${resp.content} ${topo_id} link:26:28 ${node_26} ${node_28}
- Check Overlay Link Source And Destination ${model} ${resp.content} ${topo_id} link:29:30-2 ${node_29} ${node_30}
- Check Overlay Link Source And Destination ${model} ${resp.content} ${topo_id} link:29:30-1 ${node_29} ${node_30}
+ Check Overlay Link Source And Destination
+ ... ${model}
+ ... ${resp.content}
+ ... ${topo_id}
+ ... link:28:29
+ ... ${node_28}
+ ... ${node_29}
+ Check Overlay Link Source And Destination
+ ... ${model}
+ ... ${resp.content}
+ ... ${topo_id}
+ ... link:26:28
+ ... ${node_26}
+ ... ${node_28}
+ Check Overlay Link Source And Destination
+ ... ${model}
+ ... ${resp.content}
+ ... ${topo_id}
+ ... link:29:30-2
+ ... ${node_29}
+ ... ${node_30}
+ Check Overlay Link Source And Destination
+ ... ${model}
+ ... ${resp.content}
+ ... ${topo_id}
+ ... link:29:30-1
+ ... ${node_29}
+ ... ${node_30}
#Update link to node out of topology
${request} Create Link link:28:29 bgp:28 bgp:31 linkB 11
Basic Request Put ${request} network-topology:network-topology/topology/network-topo:6/link/link:28:29
- ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=5 supporting-node_count=5
- ... node-ref_count=5 link_count=3 link-ref_count=3
+ ${resp} Wait Until Keyword Succeeds
+ ... 3x
+ ... 1s
+ ... Output Topo Should Be Complete
+ ... node_count=5
+ ... supporting-node_count=5
+ ... node-ref_count=5
+ ... link_count=3
+ ... link-ref_count=3
#Refresh node IDs
${node_26} Check Aggregated Node in Topology ${model} ${resp.content} 0 bgp:26
${node_27} Check Aggregated Node in Topology ${model} ${resp.content} 0 bgp:27
${node_29} Check Aggregated Node in Topology ${model} ${resp.content} 0 bgp:29
${node_30} Check Aggregated Node in Topology ${model} ${resp.content} 0 bgp:30
Should Not Contain ${resp.content} /network-topology/topology/network-topo:6/link/link:28:29
- Check Overlay Link Source And Destination ${model} ${resp.content} ${topo_id} link:26:28 ${node_26} ${node_28}
- Check Overlay Link Source And Destination ${model} ${resp.content} ${topo_id} link:29:30-2 ${node_29} ${node_30}
- Check Overlay Link Source And Destination ${model} ${resp.content} ${topo_id} link:29:30-1 ${node_29} ${node_30}
- Check Overlay Link Source And Destination ${model} ${resp.content} ${topo_id} link:29:30-1 ${node_29} ${node_30}
+ Check Overlay Link Source And Destination
+ ... ${model}
+ ... ${resp.content}
+ ... ${topo_id}
+ ... link:26:28
+ ... ${node_26}
+ ... ${node_28}
+ Check Overlay Link Source And Destination
+ ... ${model}
+ ... ${resp.content}
+ ... ${topo_id}
+ ... link:29:30-2
+ ... ${node_29}
+ ... ${node_30}
+ Check Overlay Link Source And Destination
+ ... ${model}
+ ... ${resp.content}
+ ... ${topo_id}
+ ... link:29:30-1
+ ... ${node_29}
+ ... ${node_30}
+ Check Overlay Link Source And Destination
+ ... ${model}
+ ... ${resp.content}
+ ... ${topo_id}
+ ... link:29:30-1
+ ... ${node_29}
+ ... ${node_30}
*** Settings ***
-Documentation Test suite to verify processing of removal requests on different models.
-... Before tests start, configurational files have to be rewriten to change listeners registration datastore type from CONFIG_API to OPERATIONAL_API.
-... Need for this change is also a reason why main feature (odl-topoprocessing-framework) is installed after file change and not during boot.
-... Suite setup also installs features required for tested models and clears karaf logs for further synchronization. Tests themselves send configurational
-... xmls and verify output. Topology-id on the end of each url must match topology-id from xml. Yang models of components in topology are defined in xmls.
-Suite Setup Setup Environment
-Suite Teardown Clean Environment
-Test Setup SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
-Test Teardown Refresh Underlay Topologies And Delete Overlay Topology
-Library RequestsLibrary
-Library SSHLibrary
-Library XML
-Variables ../../../variables/topoprocessing/TopologyRequests.py
-Variables ../../../variables/topoprocessing/TargetFields.py
-Variables ../../../variables/Variables.py
-Resource ../../../libraries/KarafKeywords.robot
-Resource ../../../libraries/Utils.robot
-Resource ../../../libraries/TopoprocessingKeywords.robot
+Documentation Test suite to verify processing of removal requests on different models.
+... Before tests start, configurational files have to be rewriten to change listeners registration datastore type from CONFIG_API to OPERATIONAL_API.
+... Need for this change is also a reason why main feature (odl-topoprocessing-framework) is installed after file change and not during boot.
+... Suite setup also installs features required for tested models and clears karaf logs for further synchronization. Tests themselves send configurational
+... xmls and verify output. Topology-id on the end of each url must match topology-id from xml. Yang models of components in topology are defined in xmls.
+
+Library RequestsLibrary
+Library SSHLibrary
+Library XML
+Variables ../../../variables/topoprocessing/TopologyRequests.py
+Variables ../../../variables/topoprocessing/TargetFields.py
+Variables ../../../variables/Variables.py
+Resource ../../../libraries/KarafKeywords.robot
+Resource ../../../libraries/Utils.robot
+Resource ../../../libraries/TopoprocessingKeywords.robot
+
+Suite Setup Setup Environment
+Suite Teardown Clean Environment
+Test Setup SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
+Test Teardown Refresh Underlay Topologies And Delete Overlay Topology
+
*** Test Cases ***
Unification Node Removal NT
[Documentation] Test processing of node removal using unification operation on Network Topology model
${model} Set Variable network-topology-model
#Create the original topology
- ${request} Prepare Unification Topology Request ${UNIFICATION_NT} network-topology-model node network-topo:1 network-topo:2
+ ${request} Prepare Unification Topology Request
+ ... ${UNIFICATION_NT}
+ ... network-topology-model
+ ... node
+ ... network-topo:1
+ ... network-topo:2
${request} Insert Target Field ${request} 0 ${ISIS_NODE_TE_ROUTER_ID_IPV4} 0
${request} Insert Target Field ${request} 1 ${ISIS_NODE_TE_ROUTER_ID_IPV4} 0
Basic Request Put ${request} ${OVERLAY_TOPO_URL}
- ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=8 supporting-node_count=10
+ ${resp} Wait Until Keyword Succeeds
+ ... 3x
+ ... 1s
+ ... Output Topo Should Be Complete
+ ... node_count=8
+ ... supporting-node_count=10
... node-ref_count=10
#Remove an underlay aggregated node, preserving the overlay node
Delete Underlay Node network-topo:1 bgp:3
- ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=8 supporting-node_count=9
+ ${resp} Wait Until Keyword Succeeds
+ ... 3x
+ ... 1s
+ ... Output Topo Should Be Complete
+ ... node_count=8
+ ... supporting-node_count=9
... node-ref_count=9
Check Aggregated Node in Topology ${model} ${resp.content} 2 bgp:4
#Remove an underlay aggregated node, expecting removal of the overlay node
Delete Underlay Node network-topo:1 bgp:4
- ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=7 supporting-node_count=8
+ ${resp} Wait Until Keyword Succeeds
+ ... 3x
+ ... 1s
+ ... Output Topo Should Be Complete
+ ... node_count=7
+ ... supporting-node_count=8
... node-ref_count=8
Unification Node Removal Inventory
[Documentation] Test processing of node removal using unification operation on Inventory model
${model} Set Variable opendaylight-inventory-model
#Create the original topology
- ${request} Prepare Unification Topology Request ${UNIFICATION_NT} ${model} node openflow-topo:1 openflow-topo:2
+ ${request} Prepare Unification Topology Request
+ ... ${UNIFICATION_NT}
+ ... ${model}
+ ... node
+ ... openflow-topo:1
+ ... openflow-topo:2
${request} Insert Target Field ${request} 0 ${OPENFLOW_NODE_IP_ADDRESS} 0
${request} Insert Target Field ${request} 1 ${OPENFLOW_NODE_IP_ADDRESS} 0
Basic Request Put ${request} ${OVERLAY_TOPO_URL}
- ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=7 supporting-node_count=10
+ ${resp} Wait Until Keyword Succeeds
+ ... 3x
+ ... 1s
+ ... Output Topo Should Be Complete
+ ... node_count=7
+ ... supporting-node_count=10
... node-ref_count=10
#Remove an underlay aggregated node, preserving the overlay node
Delete Underlay Node openflow-topo:2 of-node:6
- ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=7 supporting-node_count=9
+ ${resp} Wait Until Keyword Succeeds
+ ... 3x
+ ... 1s
+ ... Output Topo Should Be Complete
+ ... node_count=7
+ ... supporting-node_count=9
... node-ref_count=9
Check Aggregated Node in Topology ${model} ${resp.content} 2 of-node:1
#Remove an underlay aggregated node, expecting removal of the overlay node
Delete Underlay Node openflow-topo:1 of-node:1
- ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=6 supporting-node_count=8
+ ${resp} Wait Until Keyword Succeeds
+ ... 3x
+ ... 1s
+ ... Output Topo Should Be Complete
+ ... node_count=6
+ ... supporting-node_count=8
... node-ref_count=8
Filtration Range Number Node Removal NT
${request} Insert Filter ${request} ${FILTER_RANGE_NUMBER} ${OVSDB_OVS_VERSION}
${request} Set Range Number Filter ${request} 20 25
Basic Request Put ${request} ${OVERLAY_TOPO_URL}
- ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=4 supporting-node_count=4
- ... node-ref_count=4 tp_count=5 tp-ref_count=5
+ ${resp} Wait Until Keyword Succeeds
+ ... 3x
+ ... 1s
+ ... Output Topo Should Be Complete
+ ... node_count=4
+ ... supporting-node_count=4
+ ... node-ref_count=4
+ ... tp_count=5
+ ... tp-ref_count=5
#Remove an underlay filtered node, expecting removal of the overlay node
Delete Underlay Node network-topo:2 bgp:7
- ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=3 supporting-node_count=3
- ... node-ref_count=3 tp_count=3 tp-ref_count=3
+ ${resp} Wait Until Keyword Succeeds
+ ... 3x
+ ... 1s
+ ... Output Topo Should Be Complete
+ ... node_count=3
+ ... supporting-node_count=3
+ ... node-ref_count=3
+ ... tp_count=3
+ ... tp-ref_count=3
Filtration Range Number Node Removal Inventory
[Documentation] Test processing of node removal using filtration operation on Inventory model
${request} Insert Filter ${request} ${FILTER_RANGE_NUMBER} ${OPENFLOW_NODE_SERIAL_NUMBER}
${request} Set Range Number Filter ${request} 20 25
Basic Request Put ${request} ${OVERLAY_TOPO_URL}
- ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=3 supporting-node_count=3
- ... node-ref_count=3 tp_count=0 tp-ref_count=0
+ ${resp} Wait Until Keyword Succeeds
+ ... 3x
+ ... 1s
+ ... Output Topo Should Be Complete
+ ... node_count=3
+ ... supporting-node_count=3
+ ... node-ref_count=3
+ ... tp_count=0
+ ... tp-ref_count=0
#Remove an underlay filtered node, expecting removal of the overlay node
Delete Underlay Node openflow-topo:2 of-node:8
- ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=2 supporting-node_count=2
- ... node-ref_count=2 tp_count=0 tp-ref_count=0
+ ${resp} Wait Until Keyword Succeeds
+ ... 3x
+ ... 1s
+ ... Output Topo Should Be Complete
+ ... node_count=2
+ ... supporting-node_count=2
+ ... node-ref_count=2
+ ... tp_count=0
+ ... tp-ref_count=0
Filtration Range Number Termination Point Removal NT
[Documentation] Test processing of termination point removal using filtration operation on Network Topology model
${model} Set Variable network-topology-model
#Create the original topology
- ${request} Prepare Filtration Topology Request ${FILTRATION_NT} ${model} termination-point network-topo:2
+ ${request} Prepare Filtration Topology Request
+ ... ${FILTRATION_NT}
+ ... ${model}
+ ... termination-point
+ ... network-topo:2
${request} Insert Filter ${request} ${FILTER_RANGE_NUMBER} ${OVSDB_OFPORT}
${request} Set Range Number Filter ${request} 1115 1119
Basic Request Put ${request} ${OVERLAY_TOPO_URL}
- ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=5 supporting-node_count=5
- ... node-ref_count=5 tp_count=3 tp-ref_count=3
+ ${resp} Wait Until Keyword Succeeds
+ ... 3x
+ ... 1s
+ ... Output Topo Should Be Complete
+ ... node_count=5
+ ... supporting-node_count=5
+ ... node-ref_count=5
+ ... tp_count=3
+ ... tp-ref_count=3
#Remove an underlay filtered termination point
Delete Underlay Termination Point network-topo:2 bgp:7 tp:7:2
- ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=5 supporting-node_count=5
- ... node-ref_count=5 tp_count=2 tp-ref_count=2
+ ${resp} Wait Until Keyword Succeeds
+ ... 3x
+ ... 1s
+ ... Output Topo Should Be Complete
+ ... node_count=5
+ ... supporting-node_count=5
+ ... node-ref_count=5
+ ... tp_count=2
+ ... tp-ref_count=2
#Remove an underlay filtered termination point
Delete Underlay Termination Point network-topo:2 bgp:7 tp:7:1
- ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=5 supporting-node_count=5
- ... node-ref_count=5 tp_count=1 tp-ref_count=1
+ ${resp} Wait Until Keyword Succeeds
+ ... 3x
+ ... 1s
+ ... Output Topo Should Be Complete
+ ... node_count=5
+ ... supporting-node_count=5
+ ... node-ref_count=5
+ ... tp_count=1
+ ... tp-ref_count=1
Filtration Range Number Termination Point Removal Inventory
[Documentation] Test processing of termination point removal using filtration operation on Inventory model
${model} Set Variable opendaylight-inventory-model
#Create the original topology
- ${request} Prepare Filtration Topology Request ${FILTRATION_NT} ${model} termination-point openflow-topo:1
+ ${request} Prepare Filtration Topology Request
+ ... ${FILTRATION_NT}
+ ... ${model}
+ ... termination-point
+ ... openflow-topo:1
${request} Insert Filter ${request} ${FILTER_RANGE_NUMBER} ${OPENFLOW_NODE_CONNECTOR_PORT_NUMBER}
${request} Set Range Number Filter ${request} 2 4
Basic Request Put ${request} ${OVERLAY_TOPO_URL}
- ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=5 supporting-node_count=5
- ... node-ref_count=5 tp_count=5 tp-ref_count=5
+ ${resp} Wait Until Keyword Succeeds
+ ... 3x
+ ... 1s
+ ... Output Topo Should Be Complete
+ ... node_count=5
+ ... supporting-node_count=5
+ ... node-ref_count=5
+ ... tp_count=5
+ ... tp-ref_count=5
#Remove an underlay filtered termination point
Delete Underlay Termination Point openflow-topo:1 of-node:3 tp:3:2
- ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=5 supporting-node_count=5
- ... node-ref_count=5 tp_count=4 tp-ref_count=4
+ ${resp} Wait Until Keyword Succeeds
+ ... 3x
+ ... 1s
+ ... Output Topo Should Be Complete
+ ... node_count=5
+ ... supporting-node_count=5
+ ... node-ref_count=5
+ ... tp_count=4
+ ... tp-ref_count=4
#Remove an underlay filtered termination point
Delete Underlay Termination Point openflow-topo:1 of-node:3 tp:3:1
- ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=5 supporting-node_count=5
- ... node-ref_count=5 tp_count=3 tp-ref_count=3
+ ${resp} Wait Until Keyword Succeeds
+ ... 3x
+ ... 1s
+ ... Output Topo Should Be Complete
+ ... node_count=5
+ ... supporting-node_count=5
+ ... node-ref_count=5
+ ... tp_count=3
+ ... tp-ref_count=3
Filtration Range Number Link Removal NT
[Documentation] Test processing of link removal using filtration operation on NT model
#Create the original topology
- ${request} Prepare Filtration Topology Request ${FILTRATION_NT} network-topology-model link network-topo:1
+ ${request} Prepare Filtration Topology Request
+ ... ${FILTRATION_NT}
+ ... network-topology-model
+ ... link
+ ... network-topo:1
${request} Insert Filter ${request} ${FILTER_RANGE_NUMBER} ${IGP_LINK_METRIC}
${request} Set Range Number Filter ${request} 11 13
Basic Request Put ${request} ${OVERLAY_TOPO_URL}
- ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete link_count=3 link-ref_count=3
+ ${resp} Wait Until Keyword Succeeds
+ ... 3x
+ ... 1s
+ ... Output Topo Should Be Complete
+ ... link_count=3
+ ... link-ref_count=3
#Remove an underlay filtered link, expecting removal of the overlay link
Delete Underlay Link network-topo:1 link:1:3
- ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete link_count=2 link-ref_count=2
+ ${resp} Wait Until Keyword Succeeds
+ ... 3x
+ ... 1s
+ ... Output Topo Should Be Complete
+ ... link_count=2
+ ... link-ref_count=2
Filtration Range Number Link Removal Inventory
[Documentation] Test processing of link removal using filtration operation on Inventory model
#Create the original topology
- ${request} Prepare Filtration Topology Request ${FILTRATION_NT} opendaylight-inventory-model link openflow-topo:3
+ ${request} Prepare Filtration Topology Request
+ ... ${FILTRATION_NT}
+ ... opendaylight-inventory-model
+ ... link
+ ... openflow-topo:3
${request} Insert Filter ${request} ${FILTER_RANGE_NUMBER} ${IGP_LINK_METRIC}
${request} Set Range Number Filter ${request} 14 15
Basic Request Put ${request} ${OVERLAY_TOPO_URL}
- ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete link_count=2 link-ref_count=2
+ ${resp} Wait Until Keyword Succeeds
+ ... 3x
+ ... 1s
+ ... Output Topo Should Be Complete
+ ... link_count=2
+ ... link-ref_count=2
#Remove an underlay filtered link, expecting removal of the overlay link
Delete Underlay Link openflow-topo:3 link:14:12
- ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete link_count=1 link-ref_count=1
+ ${resp} Wait Until Keyword Succeeds
+ ... 3x
+ ... 1s
+ ... Output Topo Should Be Complete
+ ... link_count=1
+ ... link-ref_count=1
Unification Filtration Node Removal Inside NT
[Documentation] Test processing of node removal using unification with filtration operation on Network Topology model
${model} Set Variable network-topology-model
- ${request} Prepare Unification Filtration Inside Topology Request ${UNIFICATION_FILTRATION_NT_AGGREGATE_INSIDE} ${model} node ${ISIS_NODE_TE_ROUTER_ID_IPV4} network-topo:4
+ ${request} Prepare Unification Filtration Inside Topology Request
+ ... ${UNIFICATION_FILTRATION_NT_AGGREGATE_INSIDE}
+ ... ${model}
+ ... node
+ ... ${ISIS_NODE_TE_ROUTER_ID_IPV4}
+ ... network-topo:4
${request} Insert Filter With ID ${request} ${FILTER_IPV4} ${ISIS_NODE_TE_ROUTER_ID_IPV4} 1
${request} Insert Apply Filters ${request} 1 1
${request} Set IPV4 Filter ${request} 192.168.2.1/24
Basic Request Put ${request} ${OVERLAY_TOPO_URL}
- ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=2 supporting-node_count=3
- ... node-ref_count=3 tp_count=0 tp-ref_count=0
+ ${resp} Wait Until Keyword Succeeds
+ ... 3x
+ ... 1s
+ ... Output Topo Should Be Complete
+ ... node_count=2
+ ... supporting-node_count=3
+ ... node-ref_count=3
+ ... tp_count=0
+ ... tp-ref_count=0
#Remove an underlay aggregated node, preserving the overlay node
Delete Underlay Node network-topo:4 bgp:20
- ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=2 supporting-node_count=2
- ... node-ref_count=2 tp_count=0 tp-ref_count=0
+ ${resp} Wait Until Keyword Succeeds
+ ... 3x
+ ... 1s
+ ... Output Topo Should Be Complete
+ ... node_count=2
+ ... supporting-node_count=2
+ ... node-ref_count=2
+ ... tp_count=0
+ ... tp-ref_count=0
#Remove an underlay aggregated node, expecting removal of the overlay node
Delete Underlay Node network-topo:4 bgp:18
- ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=1 supporting-node_count=1
- ... node-ref_count=1 tp_count=0 tp-ref_count=0
+ ${resp} Wait Until Keyword Succeeds
+ ... 3x
+ ... 1s
+ ... Output Topo Should Be Complete
+ ... node_count=1
+ ... supporting-node_count=1
+ ... node-ref_count=1
+ ... tp_count=0
+ ... tp-ref_count=0
Unification Filtration Node Removal Inside Inventory
[Documentation] Test processing of node removal using unification with filtration operation on Inventory model
${model} Set Variable opendaylight-inventory-model
- ${request} Prepare Unification Filtration Inside Topology Request ${UNIFICATION_FILTRATION_NT_AGGREGATE_INSIDE} ${model} node ${OPENFLOW_NODE_IP_ADDRESS} openflow-topo:4
+ ${request} Prepare Unification Filtration Inside Topology Request
+ ... ${UNIFICATION_FILTRATION_NT_AGGREGATE_INSIDE}
+ ... ${model}
+ ... node
+ ... ${OPENFLOW_NODE_IP_ADDRESS}
+ ... openflow-topo:4
${request} Insert Filter With ID ${request} ${FILTER_IPV4} ${OPENFLOW_NODE_IP_ADDRESS} 1
${request} Insert Apply Filters ${request} 1 1
${request} Set IPV4 Filter ${request} 192.168.2.1/24
Basic Request Put ${request} ${OVERLAY_TOPO_URL}
- ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=2 supporting-node_count=4
- ... node-ref_count=4 tp_count=0 tp-ref_count=0
+ ${resp} Wait Until Keyword Succeeds
+ ... 3x
+ ... 1s
+ ... Output Topo Should Be Complete
+ ... node_count=2
+ ... supporting-node_count=4
+ ... node-ref_count=4
+ ... tp_count=0
+ ... tp-ref_count=0
#Remove an underlay aggregated node, preserving the overlay node
Delete Underlay Node openflow-topo:4 of-node:17
- ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=2 supporting-node_count=3
- ... node-ref_count=3 tp_count=0 tp-ref_count=0
+ ${resp} Wait Until Keyword Succeeds
+ ... 3x
+ ... 1s
+ ... Output Topo Should Be Complete
+ ... node_count=2
+ ... supporting-node_count=3
+ ... node-ref_count=3
+ ... tp_count=0
+ ... tp-ref_count=0
#Remove an underlay aggregated node, expecting removal of the overlay node
Delete Underlay Node openflow-topo:4 of-node:18
- ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=1 supporting-node_count=2
- ... node-ref_count=2 tp_count=0 tp-ref_count=0
+ ${resp} Wait Until Keyword Succeeds
+ ... 3x
+ ... 1s
+ ... Output Topo Should Be Complete
+ ... node_count=1
+ ... supporting-node_count=2
+ ... node-ref_count=2
+ ... tp_count=0
+ ... tp-ref_count=0
Link Computation Aggregation Inside Node Removal NT
[Documentation] Test processing of node removal using unification with link computation operation on Network Topology model
${model} Set Variable network-topology-model
- ${request} Prepare Unification Inside Topology Request ${UNIFICATION_NT_AGGREGATE_INSIDE} ${model} node network-topo:6
+ ${request} Prepare Unification Inside Topology Request
+ ... ${UNIFICATION_NT_AGGREGATE_INSIDE}
+ ... ${model}
+ ... node
+ ... network-topo:6
${request} Insert Target Field ${request} 0 ${ISIS_NODE_TE_ROUTER_ID_IPV4} 0
- ${request} Insert Link Computation Inside ${request} ${LINK_COMPUTATION_INSIDE} n:network-topology-model network-topo:6
+ ${request} Insert Link Computation Inside
+ ... ${request}
+ ... ${LINK_COMPUTATION_INSIDE}
+ ... n:network-topology-model
+ ... network-topo:6
Basic Request Put ${request} ${OVERLAY_TOPO_URL}
- ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=4 supporting-node_count=5
- ... node-ref_count=5 link_count=4 link-ref_count=4
+ ${resp} Wait Until Keyword Succeeds
+ ... 3x
+ ... 1s
+ ... Output Topo Should Be Complete
+ ... node_count=4
+ ... supporting-node_count=5
+ ... node-ref_count=5
+ ... link_count=4
+ ... link-ref_count=4
Delete Underlay Node network-topo:6 bgp:26
- ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=3 supporting-node_count=4
- ... node-ref_count=4 link_count=3 link-ref_count=3
+ ${resp} Wait Until Keyword Succeeds
+ ... 3x
+ ... 1s
+ ... Output Topo Should Be Complete
+ ... node_count=3
+ ... supporting-node_count=4
+ ... node-ref_count=4
+ ... link_count=3
+ ... link-ref_count=3
Delete Underlay Node network-topo:6 bgp:28
- ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=3 supporting-node_count=3
- ... node-ref_count=3 link_count=2 link-ref_count=2
+ ${resp} Wait Until Keyword Succeeds
+ ... 3x
+ ... 1s
+ ... Output Topo Should Be Complete
+ ... node_count=3
+ ... supporting-node_count=3
+ ... node-ref_count=3
+ ... link_count=2
+ ... link-ref_count=2
Link Computation Aggregation Inside Link Removal NT
[Documentation] Test processing of link removal using unification with link computation operation on Network Topology model
${model} Set Variable network-topology-model
- ${request} Prepare Unification Inside Topology Request ${UNIFICATION_NT_AGGREGATE_INSIDE} ${model} node network-topo:6
+ ${request} Prepare Unification Inside Topology Request
+ ... ${UNIFICATION_NT_AGGREGATE_INSIDE}
+ ... ${model}
+ ... node
+ ... network-topo:6
${request} Insert Target Field ${request} 0 ${ISIS_NODE_TE_ROUTER_ID_IPV4} 0
- ${request} Insert Link Computation Inside ${request} ${LINK_COMPUTATION_INSIDE} n:network-topology-model network-topo:6
+ ${request} Insert Link Computation Inside
+ ... ${request}
+ ... ${LINK_COMPUTATION_INSIDE}
+ ... n:network-topology-model
+ ... network-topo:6
Basic Request Put ${request} ${OVERLAY_TOPO_URL}
- ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=4 supporting-node_count=5
- ... node-ref_count=5 link_count=4 link-ref_count=4
+ ${resp} Wait Until Keyword Succeeds
+ ... 3x
+ ... 1s
+ ... Output Topo Should Be Complete
+ ... node_count=4
+ ... supporting-node_count=5
+ ... node-ref_count=5
+ ... link_count=4
+ ... link-ref_count=4
Delete Underlay Link network-topo:6 link:26:28
- ${resp} Wait Until Keyword Succeeds 3x 1s Output Topo Should Be Complete node_count=4 supporting-node_count=5
- ... node-ref_count=5 link_count=3 link-ref_count=3
+ ${resp} Wait Until Keyword Succeeds
+ ... 3x
+ ... 1s
+ ... Output Topo Should Be Complete
+ ... node_count=4
+ ... supporting-node_count=5
+ ... node-ref_count=5
+ ... link_count=3
+ ... link-ref_count=3
*** Settings ***
-Documentation Test suite for Cassandra DataStore PortStats Verification
-Suite Teardown Stop Tsdr Suite
-Library SSHLibrary
-Library Collections
-Library String
-Library RequestsLibrary
-Library ../../../libraries/Common.py
-Resource ../../../libraries/KarafKeywords.robot
-Resource ../../../libraries/TsdrUtils.robot
-Variables ../../../variables/Variables.py
+Documentation Test suite for Cassandra DataStore PortStats Verification
+
+Library SSHLibrary
+Library Collections
+Library String
+Library RequestsLibrary
+Library ../../../libraries/Common.py
+Resource ../../../libraries/KarafKeywords.robot
+Resource ../../../libraries/TsdrUtils.robot
+Variables ../../../variables/Variables.py
+
+Suite Teardown Stop Tsdr Suite
+
*** Variables ***
-@{INTERFACE_METRICS} TransmittedPackets TransmittedBytes TransmitErrors TransmitDrops ReceivedPackets ReceivedBytes ReceiveOverRunError
-... ReceiveFrameError ReceiveErrors ReceiveDrops ReceiveCrcError CollisionCount
-${root_path} flow-capable-node-connector-statistics
-@{xpath} ${root_path}/packets/transmitted ${root_path}/bytes/transmitted ${root_path}/transmit-errors ${root_path}/transmit-drops ${root_path}/packets/received ${root_path}/bytes/received ${root_path}/receive-over-run-error
-... ${root_path}/receive-frame-error ${root_path}/receive-errors ${root_path}/receive-drops ${root_path}/receive-crc-error ${root_path}/collision-count
-@{CATEGORY} FlowStats FlowTableStats PortStats QueueStats
-${TSDR_PORTSTATS} tsdr:list PortStats
-${metric_path} metric_path
-${metric_val} metric_val
+@{INTERFACE_METRICS}
+... TransmittedPackets
+... TransmittedBytes
+... TransmitErrors
+... TransmitDrops
+... ReceivedPackets
+... ReceivedBytes
+... ReceiveOverRunError
+... ReceiveFrameError
+... ReceiveErrors
+... ReceiveDrops
+... ReceiveCrcError
+... CollisionCount
+${root_path} flow-capable-node-connector-statistics
+@{xpath}
+... ${root_path}/packets/transmitted
+... ${root_path}/bytes/transmitted
+... ${root_path}/transmit-errors
+... ${root_path}/transmit-drops
+... ${root_path}/packets/received
+... ${root_path}/bytes/received
+... ${root_path}/receive-over-run-error
+... ${root_path}/receive-frame-error
+... ${root_path}/receive-errors
+... ${root_path}/receive-drops
+... ${root_path}/receive-crc-error
+... ${root_path}/collision-count
+@{CATEGORY} FlowStats FlowTableStats PortStats QueueStats
+${TSDR_PORTSTATS} tsdr:list PortStats
+${metric_path} metric_path
+${metric_val} metric_val
@{xml_list}
@{tsdr_list}
+
*** Test Cases ***
Verification of TSDR Cassandra Feature Installation
[Documentation] Install and Verify the TSDR Cassandra Features
${ret_val}= Get Stats XML ${OPERATIONAL_NODES_API}/node/openflow:1/node-connector/openflow:1:2 ${item}
Append To List ${xml_list} ${ret_val}
${ret_val}= Set Variable -1
- ${ret_val}= Get Stats XML ${OPERATIONAL_NODES_API}/node/openflow:1/node-connector/openflow:1:LOCAL ${item}
+ ${ret_val}= Get Stats XML
+ ... ${OPERATIONAL_NODES_API}/node/openflow:1/node-connector/openflow:1:LOCAL
+ ... ${item}
Append To List ${xml_list} ${ret_val}
${ret_val}= Set Variable -1
${ret_val}= Get Stats XML ${OPERATIONAL_NODES_API}/node/openflow:2/node-connector/openflow:2:1 ${item}
${ret_val}= Get Stats XML ${OPERATIONAL_NODES_API}/node/openflow:2/node-connector/openflow:2:3 ${item}
Append To List ${xml_list} ${ret_val}
${ret_val}= Set Variable -1
- ${ret_val}= Get Stats XML ${OPERATIONAL_NODES_API}/node/openflow:2/node-connector/openflow:2:LOCAL ${item}
+ ${ret_val}= Get Stats XML
+ ... ${OPERATIONAL_NODES_API}/node/openflow:2/node-connector/openflow:2:LOCAL
+ ... ${item}
Append To List ${xml_list} ${ret_val}
${ret_val}= Set Variable -1
${ret_val}= Get Stats XML ${OPERATIONAL_NODES_API}/node/openflow:3/node-connector/openflow:3:1 ${item}
${ret_val}= Get Stats XML ${OPERATIONAL_NODES_API}/node/openflow:3/node-connector/openflow:3:2 ${item}
Append To List ${xml_list} ${ret_val}
${ret_val}= Set Variable -1
- ${ret_val}= Get Stats XML ${OPERATIONAL_NODES_API}/node/openflow:3/node-connector/openflow:3:LOCAL ${item}
+ ${ret_val}= Get Stats XML
+ ... ${OPERATIONAL_NODES_API}/node/openflow:3/node-connector/openflow:3:LOCAL
+ ... ${item}
Append To List ${xml_list} ${ret_val}
${ret_val}= Set Variable -1
END
[Documentation] Verify the InterfaceMetrics has been updated on Cassandra Data Store
Copy TSDR tables
FOR ${list} IN @{INTERFACE_METRICS}
- ${ret_val1}= Extract From DB Table grep NID=openflow:1 | grep DC=PORTSTATS | grep MN=${list} | grep RK=Node:openflow:1,NodeConnector:openflow:1:1
+ ${ret_val1}= Extract From DB Table
+ ... grep NID=openflow:1 | grep DC=PORTSTATS | grep MN=${list} | grep RK=Node:openflow:1,NodeConnector:openflow:1:1
Append To List ${tsdr_list} ${ret_val1}
- ${ret_val1}= Extract From DB Table grep NID=openflow:1 | grep DC=PORTSTATS | grep MN=${list} | grep RK=Node:openflow:1,NodeConnector:openflow:1:2
+ ${ret_val1}= Extract From DB Table
+ ... grep NID=openflow:1 | grep DC=PORTSTATS | grep MN=${list} | grep RK=Node:openflow:1,NodeConnector:openflow:1:2
Append To List ${tsdr_list} ${ret_val1}
- ${ret_val1}= Extract From DB Table grep NID=openflow:1 | grep DC=PORTSTATS | grep MN=${list} | grep RK=Node:openflow:1,NodeConnector:openflow:1:LOCAL
+ ${ret_val1}= Extract From DB Table
+ ... grep NID=openflow:1 | grep DC=PORTSTATS | grep MN=${list} | grep RK=Node:openflow:1,NodeConnector:openflow:1:LOCAL
Append To List ${tsdr_list} ${ret_val1}
- ${ret_val1}= Extract From DB Table grep NID=openflow:2 | grep DC=PORTSTATS | grep MN=${list} | grep RK=Node:openflow:2,NodeConnector:openflow:2:1
+ ${ret_val1}= Extract From DB Table
+ ... grep NID=openflow:2 | grep DC=PORTSTATS | grep MN=${list} | grep RK=Node:openflow:2,NodeConnector:openflow:2:1
Append To List ${tsdr_list} ${ret_val1}
- ${ret_val1}= Extract From DB Table grep NID=openflow:2 | grep DC=PORTSTATS | grep MN=${list} | grep RK=Node:openflow:2,NodeConnector:openflow:2:2
+ ${ret_val1}= Extract From DB Table
+ ... grep NID=openflow:2 | grep DC=PORTSTATS | grep MN=${list} | grep RK=Node:openflow:2,NodeConnector:openflow:2:2
Append To List ${tsdr_list} ${ret_val1}
- ${ret_val1}= Extract From DB Table grep NID=openflow:2 | grep DC=PORTSTATS | grep MN=${list} | grep RK=Node:openflow:2,NodeConnector:openflow:2:3
+ ${ret_val1}= Extract From DB Table
+ ... grep NID=openflow:2 | grep DC=PORTSTATS | grep MN=${list} | grep RK=Node:openflow:2,NodeConnector:openflow:2:3
Append To List ${tsdr_list} ${ret_val1}
- ${ret_val1}= Extract From DB Table grep NID=openflow:2 | grep DC=PORTSTATS | grep MN=${list} | grep RK=Node:openflow:2,NodeConnector:openflow:2:LOCAL
+ ${ret_val1}= Extract From DB Table
+ ... grep NID=openflow:2 | grep DC=PORTSTATS | grep MN=${list} | grep RK=Node:openflow:2,NodeConnector:openflow:2:LOCAL
Append To List ${tsdr_list} ${ret_val1}
- ${ret_val1}= Extract From DB Table grep NID=openflow:3 | grep DC=PORTSTATS | grep MN=${list} | grep RK=Node:openflow:3,NodeConnector:openflow:3:1
+ ${ret_val1}= Extract From DB Table
+ ... grep NID=openflow:3 | grep DC=PORTSTATS | grep MN=${list} | grep RK=Node:openflow:3,NodeConnector:openflow:3:1
Append To List ${tsdr_list} ${ret_val1}
- ${ret_val1}= Extract From DB Table grep NID=openflow:3 | grep DC=PORTSTATS | grep MN=${list} | grep RK=Node:openflow:3,NodeConnector:openflow:3:2
+ ${ret_val1}= Extract From DB Table
+ ... grep NID=openflow:3 | grep DC=PORTSTATS | grep MN=${list} | grep RK=Node:openflow:3,NodeConnector:openflow:3:2
Append To List ${tsdr_list} ${ret_val1}
- ${ret_val1}= Extract From DB Table grep NID=openflow:3 | grep DC=PORTSTATS | grep MN=${list} | grep RK=Node:openflow:3,NodeConnector:openflow:3:LOCAL
+ ${ret_val1}= Extract From DB Table
+ ... grep NID=openflow:3 | grep DC=PORTSTATS | grep MN=${list} | grep RK=Node:openflow:3,NodeConnector:openflow:3:LOCAL
Append To List ${tsdr_list} ${ret_val1}
END
Compare Tsdr XML Metrics ${xml_val} ${tsdr_val} 20
END
+
*** Keywords ***
Extract From DB Table
- [Arguments] ${pattern}
[Documentation] Extract from metricpath table and return the value
+ [Arguments] ${pattern}
${ret_val1}= Set Variable -100
${ret_val1}= Verify the Metrics Attributes on Cassandra Client ${pattern}
- [Return] ${ret_val1}
+ RETURN ${ret_val1}
*** Settings ***
-Documentation Test suite for Cassandra DataStore Flow Stats Verification
-Suite Setup Initialize the Tsdr Suite
-Suite Teardown Stop Tsdr Suite
-Library SSHLibrary
-Library Collections
-Library String
-Library ../../../libraries/Common.py
-Resource ../../../libraries/KarafKeywords.robot
-Resource ../../../libraries/TsdrUtils.robot
-Variables ../../../variables/Variables.py
+Documentation Test suite for Cassandra DataStore Flow Stats Verification
+
+Library SSHLibrary
+Library Collections
+Library String
+Library ../../../libraries/Common.py
+Resource ../../../libraries/KarafKeywords.robot
+Resource ../../../libraries/TsdrUtils.robot
+Variables ../../../variables/Variables.py
+
+Suite Setup Initialize the Tsdr Suite
+Suite Teardown Stop Tsdr Suite
+
*** Variables ***
-@{FLOW_METRICS} PacketCount ByteCount
-${TSDR_FLOWSTATS} tsdr:list FlowStats
-${packet_count} flow/flow-statistics/packet-count
-${byte_count} flow/flow-statistics/byte-count
+@{FLOW_METRICS} PacketCount ByteCount
+${TSDR_FLOWSTATS} tsdr:list FlowStats
+${packet_count} flow/flow-statistics/packet-count
+${byte_count} flow/flow-statistics/byte-count
@{tsdr_op1}
@{tsdr_op2}
@{tsdr_op3}
@{tsdr_op2_bc}
@{tsdr_op3_bc}
+
*** Test Cases ***
Verification of TSDR Cassandra Feature Installation
[Documentation] Install and Verify the TSDR Cassandra Features
Set Suite Variable @{openflow_1}
Set Suite Variable @{openflow_2}
Set Suite Variable @{openflow_3}
- @{openflow_1_packetcount}= Return all XML matches ${OPERATIONAL_NODES_API}/node/openflow:1/table/0/ ${packet_count}
- @{openflow_2_packetcount}= Return all XML matches ${OPERATIONAL_NODES_API}/node/openflow:2/table/0/ ${packet_count}
- @{openflow_3_packetcount}= Return all XML matches ${OPERATIONAL_NODES_API}/node/openflow:3/table/0/ ${packet_count}
+ @{openflow_1_packetcount}= Return all XML matches
+ ... ${OPERATIONAL_NODES_API}/node/openflow:1/table/0/
+ ... ${packet_count}
+ @{openflow_2_packetcount}= Return all XML matches
+ ... ${OPERATIONAL_NODES_API}/node/openflow:2/table/0/
+ ... ${packet_count}
+ @{openflow_3_packetcount}= Return all XML matches
+ ... ${OPERATIONAL_NODES_API}/node/openflow:3/table/0/
+ ... ${packet_count}
Set Suite Variable @{openflow_1_packetcount}
Set Suite Variable @{openflow_2_packetcount}
Set Suite Variable @{openflow_3_packetcount}
- @{openflow_1_bytecount}= Return all XML matches ${OPERATIONAL_NODES_API}/node/openflow:1/table/0/ ${byte_count}
- @{openflow_2_bytecount}= Return all XML matches ${OPERATIONAL_NODES_API}/node/openflow:2/table/0/ ${byte_count}
- @{openflow_3_bytecount}= Return all XML matches ${OPERATIONAL_NODES_API}/node/openflow:3/table/0/ ${byte_count}
+ @{openflow_1_bytecount}= Return all XML matches
+ ... ${OPERATIONAL_NODES_API}/node/openflow:1/table/0/
+ ... ${byte_count}
+ @{openflow_2_bytecount}= Return all XML matches
+ ... ${OPERATIONAL_NODES_API}/node/openflow:2/table/0/
+ ... ${byte_count}
+ @{openflow_3_bytecount}= Return all XML matches
+ ... ${OPERATIONAL_NODES_API}/node/openflow:3/table/0/
+ ... ${byte_count}
Set Suite Variable @{openflow_1_bytecount}
Set Suite Variable @{openflow_2_bytecount}
Set Suite Variable @{openflow_3_bytecount}
[Documentation] Verify the InterfaceMetrics has been updated on Cassandra Data Store
Copy TSDR tables
FOR ${flow} IN @{openflow_1}
- ${ret_val1}= Verify the Metrics Attributes on Cassandra Client grep NID=openflow:1 | grep DC=FLOWSTATS | grep MN=PacketCount | grep -F 'RK=Node:openflow:1,Table:0,Flow:${flow}'
+ ${ret_val1}= Verify the Metrics Attributes on Cassandra Client
+ ... grep NID=openflow:1 | grep DC=FLOWSTATS | grep MN=PacketCount | grep -F 'RK=Node:openflow:1,Table:0,Flow:${flow}'
Append To List ${tsdr_op1_pc} ${ret_val1}
END
FOR ${flow} IN @{openflow_2}
- ${ret_val1}= Verify the Metrics Attributes on Cassandra Client grep NID=openflow:2 | grep DC=FLOWSTATS | grep MN=PacketCount | grep -F 'RK=Node:openflow:2,Table:0,Flow:${flow}'
+ ${ret_val1}= Verify the Metrics Attributes on Cassandra Client
+ ... grep NID=openflow:2 | grep DC=FLOWSTATS | grep MN=PacketCount | grep -F 'RK=Node:openflow:2,Table:0,Flow:${flow}'
Append To List ${tsdr_op2_pc} ${ret_val1}
END
FOR ${flow} IN @{openflow_3}
- ${ret_val1}= Verify the Metrics Attributes on Cassandra Client grep NID=openflow:3 | grep DC=FLOWSTATS | grep MN=PacketCount | grep -F 'RK=Node:openflow:3,Table:0,Flow:${flow}'
+ ${ret_val1}= Verify the Metrics Attributes on Cassandra Client
+ ... grep NID=openflow:3 | grep DC=FLOWSTATS | grep MN=PacketCount | grep -F 'RK=Node:openflow:3,Table:0,Flow:${flow}'
Append To List ${tsdr_op3_pc} ${ret_val1}
END
FOR ${flow} IN @{openflow_1}
- ${ret_val1}= Verify the Metrics Attributes on Cassandra Client grep NID=openflow:1 | grep DC=FLOWSTATS | grep MN=ByteCount | grep -F 'RK=Node:openflow:1,Table:0,Flow:${flow}'
+ ${ret_val1}= Verify the Metrics Attributes on Cassandra Client
+ ... grep NID=openflow:1 | grep DC=FLOWSTATS | grep MN=ByteCount | grep -F 'RK=Node:openflow:1,Table:0,Flow:${flow}'
Append To List ${tsdr_op1_bc} ${ret_val1}
END
FOR ${flow} IN @{openflow_2}
- ${ret_val1}= Verify the Metrics Attributes on Cassandra Client grep NID=openflow:2 | grep DC=FLOWSTATS | grep MN=ByteCount | grep -F 'RK=Node:openflow:2,Table:0,Flow:${flow}'
+ ${ret_val1}= Verify the Metrics Attributes on Cassandra Client
+ ... grep NID=openflow:2 | grep DC=FLOWSTATS | grep MN=ByteCount | grep -F 'RK=Node:openflow:2,Table:0,Flow:${flow}'
Append To List ${tsdr_op2_bc} ${ret_val1}
END
FOR ${flow} IN @{openflow_3}
- ${ret_val1}= Verify the Metrics Attributes on Cassandra Client grep NID=openflow:3 | grep DC=FLOWSTATS | grep MN=ByteCount | grep -F 'RK=Node:openflow:3,Table:0,Flow:${flow}'
+ ${ret_val1}= Verify the Metrics Attributes on Cassandra Client
+ ... grep NID=openflow:3 | grep DC=FLOWSTATS | grep MN=ByteCount | grep -F 'RK=Node:openflow:3,Table:0,Flow:${flow}'
Append To List ${tsdr_op3_bc} ${ret_val1}
END
Set Suite Variable @{tsdr_op1_pc}
Compare Tsdr XML Metrics ${xml_val} ${tsdr_val} 20
END
+
*** Keywords ***
Initialize the Tsdr Suite
Initialize Cassandra Tables Metricval
*** Settings ***
-Documentation Test suite for Cassandra DataStore Flow Table Stats Verification
-Suite Setup Initialize the Tsdr Suite
-Suite Teardown Stop Tsdr Suite
-Library SSHLibrary
-Library Collections
-Library String
-Library ../../../libraries/Common.py
-Resource ../../../libraries/KarafKeywords.robot
-Resource ../../../libraries/TsdrUtils.robot
-Variables ../../../variables/Variables.py
+Documentation Test suite for Cassandra DataStore Flow Table Stats Verification
+
+Library SSHLibrary
+Library Collections
+Library String
+Library ../../../libraries/Common.py
+Resource ../../../libraries/KarafKeywords.robot
+Resource ../../../libraries/TsdrUtils.robot
+Variables ../../../variables/Variables.py
+
+Suite Setup Initialize the Tsdr Suite
+Suite Teardown Stop Tsdr Suite
+
*** Variables ***
-${TSDR_FLOWTABLE_STATS} tsdr:list FlowTableStats
+${TSDR_FLOWTABLE_STATS} tsdr:list FlowTableStats
@{tsdr_pl}
@{tsdr_af}
@{tsdr_pm}
-${packetlookup} flow-table-statistics/packets-looked-up
-${activeflows} flow-table-statistics/active-flows
-${packetmatched} flow-table-statistics/packets-matched
+${packetlookup} flow-table-statistics/packets-looked-up
+${activeflows} flow-table-statistics/active-flows
+${packetmatched} flow-table-statistics/packets-matched
@{openflow_packetlookup}
@{openflow_activeflows}
@{openflow_packetmatched}
+
*** Test Cases ***
Verification of TSDR Cassandra Feature Installation
[Documentation] Install and Verify the TSDR Cassandra Features
Verification of FlowStats-Attributes on Cassandra Data Store
[Documentation] Verify the InterfaceMetrics has been updated on Cassandra Data Store
Copy TSDR tables
- ${ret_val1}= Verify the Metrics Attributes on Cassandra Client grep NID=openflow:1 | grep DC=FLOWTABLESTATS | grep MN=PacketLookup | grep RK=Node:openflow:1,Table:0
+ ${ret_val1}= Verify the Metrics Attributes on Cassandra Client
+ ... grep NID=openflow:1 | grep DC=FLOWTABLESTATS | grep MN=PacketLookup | grep RK=Node:openflow:1,Table:0
Append To List ${tsdr_pl} ${ret_val1}
- ${ret_val1}= Verify the Metrics Attributes on Cassandra Client grep NID=openflow:2 | grep DC=FLOWTABLESTATS | grep MN=PacketLookup | grep RK=Node:openflow:2,Table:0
+ ${ret_val1}= Verify the Metrics Attributes on Cassandra Client
+ ... grep NID=openflow:2 | grep DC=FLOWTABLESTATS | grep MN=PacketLookup | grep RK=Node:openflow:2,Table:0
Append To List ${tsdr_pl} ${ret_val1}
- ${ret_val1}= Verify the Metrics Attributes on Cassandra Client grep NID=openflow:3 | grep DC=FLOWTABLESTATS | grep MN=PacketLookup | grep RK=Node:openflow:3,Table:0
+ ${ret_val1}= Verify the Metrics Attributes on Cassandra Client
+ ... grep NID=openflow:3 | grep DC=FLOWTABLESTATS | grep MN=PacketLookup | grep RK=Node:openflow:3,Table:0
Append To List ${tsdr_pl} ${ret_val1}
- ${ret_val1}= Verify the Metrics Attributes on Cassandra Client grep NID=openflow:1 | grep DC=FLOWTABLESTATS | grep MN=ActiveFlows | grep RK=Node:openflow:1,Table:0
+ ${ret_val1}= Verify the Metrics Attributes on Cassandra Client
+ ... grep NID=openflow:1 | grep DC=FLOWTABLESTATS | grep MN=ActiveFlows | grep RK=Node:openflow:1,Table:0
Append To List ${tsdr_af} ${ret_val1}
- ${ret_val1}= Verify the Metrics Attributes on Cassandra Client grep NID=openflow:2 | grep DC=FLOWTABLESTATS | grep MN=ActiveFlows | grep RK=Node:openflow:2,Table:0
+ ${ret_val1}= Verify the Metrics Attributes on Cassandra Client
+ ... grep NID=openflow:2 | grep DC=FLOWTABLESTATS | grep MN=ActiveFlows | grep RK=Node:openflow:2,Table:0
Append To List ${tsdr_af} ${ret_val1}
- ${ret_val1}= Verify the Metrics Attributes on Cassandra Client grep NID=openflow:3 | grep DC=FLOWTABLESTATS | grep MN=ActiveFlows | grep RK=Node:openflow:3,Table:0
+ ${ret_val1}= Verify the Metrics Attributes on Cassandra Client
+ ... grep NID=openflow:3 | grep DC=FLOWTABLESTATS | grep MN=ActiveFlows | grep RK=Node:openflow:3,Table:0
Append To List ${tsdr_af} ${ret_val1}
- ${ret_val1}= Verify the Metrics Attributes on Cassandra Client grep NID=openflow:1 | grep DC=FLOWTABLESTATS | grep MN=PacketMatch | grep RK=Node:openflow:1,Table:0
+ ${ret_val1}= Verify the Metrics Attributes on Cassandra Client
+ ... grep NID=openflow:1 | grep DC=FLOWTABLESTATS | grep MN=PacketMatch | grep RK=Node:openflow:1,Table:0
Append To List ${tsdr_pm} ${ret_val1}
- ${ret_val1}= Verify the Metrics Attributes on Cassandra Client grep NID=openflow:2 | grep DC=FLOWTABLESTATS | grep MN=PacketMatch | grep RK=Node:openflow:2,Table:0
+ ${ret_val1}= Verify the Metrics Attributes on Cassandra Client
+ ... grep NID=openflow:2 | grep DC=FLOWTABLESTATS | grep MN=PacketMatch | grep RK=Node:openflow:2,Table:0
Append To List ${tsdr_pm} ${ret_val1}
- ${ret_val1}= Verify the Metrics Attributes on Cassandra Client grep NID=openflow:3 | grep DC=FLOWTABLESTATS | grep MN=PacketMatch | grep RK=Node:openflow:3,Table:0
+ ${ret_val1}= Verify the Metrics Attributes on Cassandra Client
+ ... grep NID=openflow:3 | grep DC=FLOWTABLESTATS | grep MN=PacketMatch | grep RK=Node:openflow:3,Table:0
Append To List ${tsdr_pm} ${ret_val1}
Comparing Flow Table Metrics
Compare Tsdr XML Metrics ${xml_val} ${tsdr_val} 5
END
+
*** Keywords ***
Initialize the Tsdr Suite
COMMENT Initialize the Cassandra for TSDR
*** Settings ***
-Documentation Test suite for Cassandra DataStore Queue Stats Verification
-Suite Setup Initialize Cassandra Tables Metricval
-Suite Teardown Stop Tsdr Suite
-Library SSHLibrary
-Library Collections
-Library String
-Library ../../../libraries/Common.py
-Resource ../../../libraries/KarafKeywords.robot
-Resource ../../../libraries/TsdrUtils.robot
-Variables ../../../variables/Variables.py
+Documentation Test suite for Cassandra DataStore Queue Stats Verification
+
+Library SSHLibrary
+Library Collections
+Library String
+Library ../../../libraries/Common.py
+Resource ../../../libraries/KarafKeywords.robot
+Resource ../../../libraries/TsdrUtils.robot
+Variables ../../../variables/Variables.py
+
+Suite Setup Initialize Cassandra Tables Metricval
+Suite Teardown Stop Tsdr Suite
+
*** Variables ***
-@{QUEUE_METRICS} TransmittedPackets TransmittedBytes TransmissionErrors
-${TSDR_QUEUESTATS} tsdr:list QueueStats
-${QUERY_HEAD} ${OPERATIONAL_NODES_API}/node
-${query_head1} ${QUERY_HEAD}/openflow:2/node-connector/openflow:2:2/queue/
+@{QUEUE_METRICS} TransmittedPackets TransmittedBytes TransmissionErrors
+${TSDR_QUEUESTATS} tsdr:list QueueStats
+${QUERY_HEAD} ${OPERATIONAL_NODES_API}/node
+${query_head1} ${QUERY_HEAD}/openflow:2/node-connector/openflow:2:2/queue/
@{tsdr_q0}
@{tsdr_q2}
@{tsdr_q1}
-${transmittedpackets} flow-capable-node-connector-queue-statistics/transmitted-packets
-${transmittedbytes} flow-capable-node-connector-queue-statistics/transmitted-bytes
-${transmittederrors} flow-capable-node-connector-queue-statistics/transmission-errors
+${transmittedpackets} flow-capable-node-connector-queue-statistics/transmitted-packets
+${transmittedbytes} flow-capable-node-connector-queue-statistics/transmitted-bytes
+${transmittederrors} flow-capable-node-connector-queue-statistics/transmission-errors
@{openflow_q0}
@{openflow_q2}
@{openflow_q1}
+
*** Test Cases ***
Verification of TSDR Cassandra Feature Installation
[Documentation] Install and Verify the TSDR Cassandra Features
Verification of FlowStats-Attributes on Cassandra Data Store
[Documentation] Verify the InterfaceMetrics has been updated on Cassandra Data Store
Copy TSDR tables
- ${ret_val1}= Verify the Metrics Attributes on Cassandra Client grep NID=openflow:2 | grep DC=QUEUESTATS | grep MN=TransmissionErrors | grep RK=Node:openflow:2,NodeConnector:openflow:2:2,Queue:0
+ ${ret_val1}= Verify the Metrics Attributes on Cassandra Client
+ ... grep NID=openflow:2 | grep DC=QUEUESTATS | grep MN=TransmissionErrors | grep RK=Node:openflow:2,NodeConnector:openflow:2:2,Queue:0
Append To List ${tsdr_q0} ${ret_val1}
- ${ret_val1}= Verify the Metrics Attributes on Cassandra Client grep NID=openflow:2 | grep DC=QUEUESTATS | grep MN=TransmittedPackets | grep RK=Node:openflow:2,NodeConnector:openflow:2:2,Queue:0
+ ${ret_val1}= Verify the Metrics Attributes on Cassandra Client
+ ... grep NID=openflow:2 | grep DC=QUEUESTATS | grep MN=TransmittedPackets | grep RK=Node:openflow:2,NodeConnector:openflow:2:2,Queue:0
Append To List ${tsdr_q0} ${ret_val1}
- ${ret_val1}= Verify the Metrics Attributes on Cassandra Client grep NID=openflow:2 | grep DC=QUEUESTATS | grep MN=TransmittedBytes | grep RK=Node:openflow:2,NodeConnector:openflow:2:2,Queue:0
+ ${ret_val1}= Verify the Metrics Attributes on Cassandra Client
+ ... grep NID=openflow:2 | grep DC=QUEUESTATS | grep MN=TransmittedBytes | grep RK=Node:openflow:2,NodeConnector:openflow:2:2,Queue:0
Append To List ${tsdr_q0} ${ret_val1}
- ${ret_val1}= Verify the Metrics Attributes on Cassandra Client grep NID=openflow:2 | grep DC=QUEUESTATS | grep MN=TransmissionErrors | grep RK=Node:openflow:2,NodeConnector:openflow:2:2,Queue:1
+ ${ret_val1}= Verify the Metrics Attributes on Cassandra Client
+ ... grep NID=openflow:2 | grep DC=QUEUESTATS | grep MN=TransmissionErrors | grep RK=Node:openflow:2,NodeConnector:openflow:2:2,Queue:1
Append To List ${tsdr_q1} ${ret_val1}
- ${ret_val1}= Verify the Metrics Attributes on Cassandra Client grep NID=openflow:2 | grep DC=QUEUESTATS | grep MN=TransmittedPackets | grep RK=Node:openflow:2,NodeConnector:openflow:2:2,Queue:1
+ ${ret_val1}= Verify the Metrics Attributes on Cassandra Client
+ ... grep NID=openflow:2 | grep DC=QUEUESTATS | grep MN=TransmittedPackets | grep RK=Node:openflow:2,NodeConnector:openflow:2:2,Queue:1
Append To List ${tsdr_q1} ${ret_val1}
- ${ret_val1}= Verify the Metrics Attributes on Cassandra Client grep NID=openflow:2 | grep DC=QUEUESTATS | grep MN=TransmittedBytes | grep RK=Node:openflow:2,NodeConnector:openflow:2:2,Queue:1
- ${ret_val1}= Verify the Metrics Attributes on Cassandra Client grep NID=openflow:2 | grep DC=QUEUESTATS | grep MN=TransmissionErrors | grep RK=Node:openflow:2,NodeConnector:openflow:2:2,Queue:2
+ ${ret_val1}= Verify the Metrics Attributes on Cassandra Client
+ ... grep NID=openflow:2 | grep DC=QUEUESTATS | grep MN=TransmittedBytes | grep RK=Node:openflow:2,NodeConnector:openflow:2:2,Queue:1
+ ${ret_val1}= Verify the Metrics Attributes on Cassandra Client
+ ... grep NID=openflow:2 | grep DC=QUEUESTATS | grep MN=TransmissionErrors | grep RK=Node:openflow:2,NodeConnector:openflow:2:2,Queue:2
Append To List ${tsdr_q2} ${ret_val1}
- ${ret_val1}= Verify the Metrics Attributes on Cassandra Client grep NID=openflow:2 | grep DC=QUEUESTATS | grep MN=TransmittedPackets | grep RK=Node:openflow:2,NodeConnector:openflow:2:2,Queue:2
+ ${ret_val1}= Verify the Metrics Attributes on Cassandra Client
+ ... grep NID=openflow:2 | grep DC=QUEUESTATS | grep MN=TransmittedPackets | grep RK=Node:openflow:2,NodeConnector:openflow:2:2,Queue:2
Append To List ${tsdr_q2} ${ret_val1}
- ${ret_val1}= Verify the Metrics Attributes on Cassandra Client grep NID=openflow:2 | grep DC=QUEUESTATS | grep MN=TransmittedBytes | grep RK=Node:openflow:2,NodeConnector:openflow:2:2,Queue:2
+ ${ret_val1}= Verify the Metrics Attributes on Cassandra Client
+ ... grep NID=openflow:2 | grep DC=QUEUESTATS | grep MN=TransmittedBytes | grep RK=Node:openflow:2,NodeConnector:openflow:2:2,Queue:2
Append To List ${tsdr_q2} ${ret_val1}
Comparing Queue Metrics
Compare Tsdr XML Metrics ${xml_val} ${tsdr_val} 20
END
-*** Keyword ***
+
+*** Keywords ***
Configuration of Queue on Switch
[Documentation] Queue configuration on openvswitch
Configure the Queue on Switch s2-eth2
*** Settings ***
-Documentation Test suite for Cassandra DataStore Syslog Verification
-Library SSHLibrary
-Library Collections
-Library String
-Library ../../../libraries/Common.py
-Resource ../../../libraries/KarafKeywords.robot
-Resource ../../../libraries/TsdrUtils.robot
-Variables ../../../variables/Variables.py
+Documentation Test suite for Cassandra DataStore Syslog Verification
+
+Library SSHLibrary
+Library Collections
+Library String
+Library ../../../libraries/Common.py
+Resource ../../../libraries/KarafKeywords.robot
+Resource ../../../libraries/TsdrUtils.robot
+Variables ../../../variables/Variables.py
+
*** Test Cases ***
Verification of TSDR Cassandra Feature Installation
*** Settings ***
-Documentation Test suite for Cassandra DataStore Netflow Stats Verification
-Suite Setup Initialize Netflow
-Suite Teardown Stop Tsdr Suite
-Library SSHLibrary
-Library Collections
-Library String
-Library ../../../libraries/Common.py
-Resource ../../../libraries/KarafKeywords.robot
-Resource ../../../libraries/TsdrUtils.robot
-Variables ../../../variables/Variables.py
+Documentation Test suite for Cassandra DataStore Netflow Stats Verification
+
+Library SSHLibrary
+Library Collections
+Library String
+Library ../../../libraries/Common.py
+Resource ../../../libraries/KarafKeywords.robot
+Resource ../../../libraries/TsdrUtils.robot
+Variables ../../../variables/Variables.py
+
+Suite Setup Initialize Netflow
+Suite Teardown Stop Tsdr Suite
+
*** Variables ***
-${IP_1} 10.0.0.1
-${IP_2} 10.0.0.2
-${NODE_ID} 127.0.0.1
-${engine_type} 11
-${engine_id} 11
-${nexthop} 0
-${port} 0
-${prot} 1
-${int1} 1
-${int2} 2
-${version} 5
+${IP_1} 10.0.0.1
+${IP_2} 10.0.0.2
+${NODE_ID} 127.0.0.1
+${engine_type} 11
+${engine_id} 11
+${nexthop} 0
+${port} 0
+${prot} 1
+${int1} 1
+${int2} 2
+${version} 5
+
*** Test Cases ***
Verifying TSDR Data Store For Netflow Entries
Should Contain ${netflow} dstMask=0
Should Contain ${netflow} srcMask=0
+
*** Keywords ***
Initialize Netflow
[Documentation] Initialize Netflow setup and start collecting the netflow samples.
*** Settings ***
-Documentation Test suite for ElasticSearch DataStore PortStats Verification
-Suite Teardown Stop Tsdr Suite
-Library SSHLibrary
-Library Collections
-Library String
-Library RequestsLibrary
-Library ../../../libraries/Common.py
-Resource ../../../libraries/KarafKeywords.robot
-Resource ../../../libraries/TsdrUtils.robot
-Resource ../../../variables/Variables.robot
+Documentation Test suite for ElasticSearch DataStore PortStats Verification
+
+Library SSHLibrary
+Library Collections
+Library String
+Library RequestsLibrary
+Library ../../../libraries/Common.py
+Resource ../../../libraries/KarafKeywords.robot
+Resource ../../../libraries/TsdrUtils.robot
+Resource ../../../variables/Variables.robot
+
+Suite Teardown Stop Tsdr Suite
+
*** Variables ***
@{tsdr_pl}
@{tsdr_af}
@{tsdr_pm}
-${packetlookup} flow-table-statistics/packets-looked-up
-${activeflows} flow-table-statistics/active-flows
-${packetmatched} flow-table-statistics/packets-matched
+${packetlookup} flow-table-statistics/packets-looked-up
+${activeflows} flow-table-statistics/active-flows
+${packetmatched} flow-table-statistics/packets-matched
@{openflow_packetlookup}
@{openflow_activeflows}
@{openflow_packetmatched}
+
*** Test Cases ***
Verification of TSDR ElasticSearch Feature Installation
[Documentation] Install and Verify the Elastic Search Features
Should Be Equal As Strings ${tsdr_af} ${openflow_activeflows}
Should Be Equal As Strings ${tsdr_pm} ${openflow_packetmatched}
+
*** Keywords ***
Getting all Tables from Openflow Plugin
[Documentation] Getting Flow Table Stats Values from Openflow plugin
*** Settings ***
-Documentation Test suite for H2 DataStore InterfaceMetrics Verification
-Suite Setup Start Tsdr Suite
-Suite Teardown Stop Tsdr Suite
-Library SSHLibrary
-Library Collections
-Library String
-Library ../../../libraries/Common.py
-Resource ../../../libraries/KarafKeywords.robot
-Resource ../../../libraries/TsdrUtils.robot
-Variables ../../../variables/Variables.py
+Documentation Test suite for H2 DataStore InterfaceMetrics Verification
+
+Library SSHLibrary
+Library Collections
+Library String
+Library ../../../libraries/Common.py
+Resource ../../../libraries/KarafKeywords.robot
+Resource ../../../libraries/TsdrUtils.robot
+Variables ../../../variables/Variables.py
+
+Suite Setup Start Tsdr Suite
+Suite Teardown Stop Tsdr Suite
+
*** Variables ***
-@{INTERFACE_METRICS} TransmittedPackets TransmittedBytes TransmitErrors TransmitDrops ReceivedPackets ReceivedBytes ReceiveOverRunError
-... ReceiveFrameError ReceiveErrors ReceiveDrops ReceiveCrcError CollisionCount
-@{CATEGORY} FlowGroupStats FlowMeterStats FlowStats FlowTableStats PortStats QueueStats
-${TSDR_PORTSTATS} tsdr:list PortStats
+@{INTERFACE_METRICS}
+... TransmittedPackets
+... TransmittedBytes
+... TransmitErrors
+... TransmitDrops
+... ReceivedPackets
+... ReceivedBytes
+... ReceiveOverRunError
+... ReceiveFrameError
+... ReceiveErrors
+... ReceiveDrops
+... ReceiveCrcError
+... CollisionCount
+@{CATEGORY} FlowGroupStats FlowMeterStats FlowStats FlowTableStats PortStats QueueStats
+${TSDR_PORTSTATS} tsdr:list PortStats
+
*** Test Cases ***
Verification of TSDR H2 Feature Installation
Verify Feature Is Installed odl-tsdr-all
Verify Feature Is Installed odl-tsdr-H2-persistence
Verify Feature Is Installed odl-tsdr-core
- Wait Until Keyword Succeeds 120s 1s Verify the Metric is Collected? log:display | grep "TSDR H2" TSDR H2
+ Wait Until Keyword Succeeds
+ ... 120s
+ ... 1s
+ ... Verify the Metric is Collected?
+ ... log:display | grep "TSDR H2"
+ ... TSDR H2
Verification TSDR Command is exist in Help
[Documentation] Verify the TSDR List command on Help
*** Settings ***
-Documentation Test suite for H2 DataStore Flow Metrics Verification
-Suite Setup Start Tsdr Suite
-Suite Teardown Stop Tsdr Suite
-Library SSHLibrary
-Library Collections
-Library String
-Library ../../../libraries/Common.py
-Resource ../../../libraries/KarafKeywords.robot
-Resource ../../../libraries/TsdrUtils.robot
-Variables ../../../variables/Variables.py
+Documentation Test suite for H2 DataStore Flow Metrics Verification
+
+Library SSHLibrary
+Library Collections
+Library String
+Library ../../../libraries/Common.py
+Resource ../../../libraries/KarafKeywords.robot
+Resource ../../../libraries/TsdrUtils.robot
+Variables ../../../variables/Variables.py
+
+Suite Setup Start Tsdr Suite
+Suite Teardown Stop Tsdr Suite
+
*** Variables ***
-@{FLOW_METRICS} PacketCount ByteCount
-${TSDR_FLOWSTATS} tsdr:list FlowStats
+@{FLOW_METRICS} PacketCount ByteCount
+${TSDR_FLOWSTATS} tsdr:list FlowStats
+
*** Test Cases ***
Verification of TSDR FlowMetrics
*** Settings ***
-Documentation Test suite for H2 DataStore Flow Table Metrics Verification
-Suite Setup Start Tsdr Suite
-Suite Teardown Stop Tsdr Suite
-Library SSHLibrary
-Library Collections
-Library String
-Library ../../../libraries/Common.py
-Resource ../../../libraries/KarafKeywords.robot
-Resource ../../../libraries/TsdrUtils.robot
-Variables ../../../variables/Variables.py
+Documentation Test suite for H2 DataStore Flow Table Metrics Verification
+
+Library SSHLibrary
+Library Collections
+Library String
+Library ../../../libraries/Common.py
+Resource ../../../libraries/KarafKeywords.robot
+Resource ../../../libraries/TsdrUtils.robot
+Variables ../../../variables/Variables.py
+
+Suite Setup Start Tsdr Suite
+Suite Teardown Stop Tsdr Suite
+
*** Variables ***
-@{FLOWTABLE_METRICS} ActiveFlows PacketLookup PacketMatch
-${TSDR_FLOWTABLE_STATS} tsdr:list FlowTableStats
+@{FLOWTABLE_METRICS} ActiveFlows PacketLookup PacketMatch
+${TSDR_FLOWTABLE_STATS} tsdr:list FlowTableStats
+
*** Test Cases ***
Verification of TSDR FlowTableStats
[Documentation] Verify the TSDR FlowiTableStats
- Wait Until Keyword Succeeds 60s 1s Verify the Metric is Collected? ${TSDR_FLOWTABLE_STATS}| grep ActiveFlow FLOWTABLESTATS
- ${output}= Issue Command On Karaf Console ${TSDR_FLOWTABLE_STATS}| grep openflow:1 | head ${ODL_SYSTEM_IP} ${KARAF_SHELL_PORT} 180
+ Wait Until Keyword Succeeds
+ ... 60s
+ ... 1s
+ ... Verify the Metric is Collected?
+ ... ${TSDR_FLOWTABLE_STATS}| grep ActiveFlow
+ ... FLOWTABLESTATS
+ ${output}= Issue Command On Karaf Console
+ ... ${TSDR_FLOWTABLE_STATS}| grep openflow:1 | head
+ ... ${ODL_SYSTEM_IP}
+ ... ${KARAF_SHELL_PORT}
+ ... 180
FOR ${list} IN @{FLOWTABLE_METRICS}
Should Contain ${output} ${list}
END
*** Settings ***
-Documentation Test suite for H2 DataStore Queue Metrics Verification
-Suite Setup Run Keywords Start Tsdr Suite Configuration of Queue on Switch
-Suite Teardown Stop Tsdr Suite
-Library SSHLibrary
-Library Collections
-Library String
-Library ../../../libraries/Common.py
-Resource ../../../libraries/KarafKeywords.robot
-Resource ../../../libraries/TsdrUtils.robot
-Variables ../../../variables/Variables.py
+Documentation Test suite for H2 DataStore Queue Metrics Verification
+
+Library SSHLibrary
+Library Collections
+Library String
+Library ../../../libraries/Common.py
+Resource ../../../libraries/KarafKeywords.robot
+Resource ../../../libraries/TsdrUtils.robot
+Variables ../../../variables/Variables.py
+
+Suite Setup Run Keywords Start Tsdr Suite Configuration of Queue on Switch
+Suite Teardown Stop Tsdr Suite
+
*** Variables ***
-@{QUEUE_METRICS} TransmittedPackets TransmittedBytes TransmissionErrors
-${TSDR_QUEUE_STATS} tsdr:list QueueStats
-@{CMD_LIST} FlowGroupStats FlowMeterStats FlowStats FlowTableStats PortStats QueueStats
+@{QUEUE_METRICS} TransmittedPackets TransmittedBytes TransmissionErrors
+${TSDR_QUEUE_STATS} tsdr:list QueueStats
+@{CMD_LIST} FlowGroupStats FlowMeterStats FlowStats FlowTableStats PortStats QueueStats
+
*** Test Cases ***
Verify the Queue Stats attributes exist thru Karaf console
[Documentation] Verify the QueueMetrics attributes exist on Karaf Console
Wait Until Keyword Succeeds 60s 1s Verify the Metric is Collected? ${TSDR_QUEUE_STATS} Transmitted
- ${output}= Issue Command On Karaf Console ${TSDR_QUEUE_STATS} ${ODL_SYSTEM_IP} ${KARAF_SHELL_PORT} 30
+ ${output}= Issue Command On Karaf Console
+ ... ${TSDR_QUEUE_STATS}
+ ... ${ODL_SYSTEM_IP}
+ ... ${KARAF_SHELL_PORT}
+ ... 30
FOR ${list} IN @{QUEUE_METRICS}
Should Contain ${output} ${list}
END
Should not Contain ${out} ${list}
END
-*** Keyword ***
+
+*** Keywords ***
Configuration of Queue on Switch
[Documentation] Queue configuration on openvswitch
Configure the Queue on Switch s2-eth2
*** Settings ***
-Documentation Test suite for H2 DataStore FlowGroup Stats Verification
-Suite Setup Run Keywords Start TSDR suite with CPqD Switch Configuration of FlowGroup on Switch
-Suite Teardown Stop Tsdr Suite
-Library SSHLibrary
-Library Collections
-Library String
-Library ../../../libraries/Common.py
-Resource ../../../libraries/KarafKeywords.robot
-Resource ../../../libraries/TsdrUtils.robot
-Variables ../../../variables/Variables.py
+Documentation Test suite for H2 DataStore FlowGroup Stats Verification
+
+Library SSHLibrary
+Library Collections
+Library String
+Library ../../../libraries/Common.py
+Resource ../../../libraries/KarafKeywords.robot
+Resource ../../../libraries/TsdrUtils.robot
+Variables ../../../variables/Variables.py
+
+Suite Setup Run Keywords Start TSDR suite with CPqD Switch Configuration of FlowGroup on Switch
+Suite Teardown Stop Tsdr Suite
+
*** Variables ***
-@{FLOWGROUP_METRICS} ByteCount PacketCount RefCount
-${TSDR_FLOWGROUPSTATS} tsdr:list FlowGroupStats
-@{FLOWGROUP_HEADER} MetricName MetricValue MetricCategory MetricDetails
+@{FLOWGROUP_METRICS} ByteCount PacketCount RefCount
+${TSDR_FLOWGROUPSTATS} tsdr:list FlowGroupStats
+@{FLOWGROUP_HEADER} MetricName MetricValue MetricCategory MetricDetails
+
*** Test Cases ***
Verify the FlowGroup Stats attributes exist thru Karaf console
[Documentation] Verify the FlowGroupStats attributes exist on Karaf Console
Wait Until Keyword Succeeds 120s 1s Verify the Metric is Collected? ${TSDR_FLOWGROUPSTATS} ByteCount
- ${output}= Issue Command On Karaf Console ${TSDR_FLOWGROUPSTATS} ${ODL_SYSTEM_IP} ${KARAF_SHELL_PORT} 30
+ ${output}= Issue Command On Karaf Console
+ ... ${TSDR_FLOWGROUPSTATS}
+ ... ${ODL_SYSTEM_IP}
+ ... ${KARAF_SHELL_PORT}
+ ... 30
FOR ${list} IN @{FLOWGROUP_METRICS}
Should Contain ${output} ${list}
END
Should Contain ${output} ${list}
END
-*** Keyword ***
+
+*** Keywords ***
Start TSDR suite with CPqD Switch
Start Tsdr Suite user
Configuration of FlowGroup on Switch
[Documentation] FlowGroup configuration on CPqD
Run Command On Remote System ${TOOLS_SYSTEM_IP} sudo dpctl unix:/tmp/s1 group-mod cmd=add,group=1,type=all
- Run Command On Remote System ${TOOLS_SYSTEM_IP} sudo dpctl unix:/tmp/s1 flow-mod table=0,cmd=add eth_type=0x800,eth_src=00:01:02:03:04:05 apply:group=1
+ Run Command On Remote System
+ ... ${TOOLS_SYSTEM_IP}
+ ... sudo dpctl unix:/tmp/s1 flow-mod table=0,cmd=add eth_type=0x800,eth_src=00:01:02:03:04:05 apply:group=1
Run Command On Remote System ${TOOLS_SYSTEM_IP} sudo dpctl unix:/tmp/s1 ping 10
Run Command On Remote System ${TOOLS_SYSTEM_IP} sudo dpctl unix:/tmp/s2 ping 10
*** Settings ***
-Documentation Test suite for H2 DataStore FlowMeter Stats Verification
-Suite Setup Run Keywords Start TSDR suite with CPqD Switch Configuration of FlowMeter on Switch
-Suite Teardown Stop Tsdr Suite
-Library SSHLibrary
-Library Collections
-Library String
-Library ../../../libraries/Common.py
-Resource ../../../libraries/KarafKeywords.robot
-Resource ../../../libraries/TsdrUtils.robot
-Variables ../../../variables/Variables.py
+Documentation Test suite for H2 DataStore FlowMeter Stats Verification
+
+Library SSHLibrary
+Library Collections
+Library String
+Library ../../../libraries/Common.py
+Resource ../../../libraries/KarafKeywords.robot
+Resource ../../../libraries/TsdrUtils.robot
+Variables ../../../variables/Variables.py
+
+Suite Setup Run Keywords Start TSDR suite with CPqD Switch Configuration of FlowMeter on Switch
+Suite Teardown Stop Tsdr Suite
+
*** Variables ***
-@{FLOWMETER_METRICS} ByteInCount PacketInCount FlowCount
-${TSDR_FLOWMETERSTATS} tsdr:list FlowMeterStats
-@{FLOWMETER_HEADER} MetricName MetricValue MetricCategory MetricDetails
+@{FLOWMETER_METRICS} ByteInCount PacketInCount FlowCount
+${TSDR_FLOWMETERSTATS} tsdr:list FlowMeterStats
+@{FLOWMETER_HEADER} MetricName MetricValue MetricCategory MetricDetails
+
*** Test Cases ***
Verify the FlowMeter Stats attributes exist thru Karaf console
[Documentation] Verify the FlowMeterStats attributes exist on Karaf Console
- Wait Until Keyword Succeeds 120s 1s Verify the Metric is Collected? ${TSDR_FLOWMETERSTATS} ByteInCount
- ${output}= Issue Command On Karaf Console ${TSDR_FLOWMETERSTATS} ${ODL_SYSTEM_IP} ${KARAF_SHELL_PORT} 30
+ Wait Until Keyword Succeeds
+ ... 120s
+ ... 1s
+ ... Verify the Metric is Collected?
+ ... ${TSDR_FLOWMETERSTATS}
+ ... ByteInCount
+ ${output}= Issue Command On Karaf Console
+ ... ${TSDR_FLOWMETERSTATS}
+ ... ${ODL_SYSTEM_IP}
+ ... ${KARAF_SHELL_PORT}
+ ... 30
FOR ${list} IN @{FLOWMETER_METRICS}
Should Contain ${output} ${list}
END
${output}= Issue Command On Karaf Console tsdr\t ${ODL_SYSTEM_IP} ${KARAF_SHELL_PORT}
Should not Contain ${output} tsdr:list
-*** Keyword ***
+
+*** Keywords ***
Start TSDR suite with CPqD Switch
Start Tsdr Suite user
Configuration of FlowMeter on Switch
[Documentation] FlowMeter configuration on CPqD
- Run Command On Remote System ${TOOLS_SYSTEM_IP} sudo dpctl unix:/tmp/s1 meter-mod cmd=add,flags=1,meter=1 drop:rate=100
- Run Command On Remote System ${TOOLS_SYSTEM_IP} sudo dpctl unix:/tmp/s1 flow-mod table=0,cmd=add in_port=1 meter:1 apply:output=2
+ Run Command On Remote System
+ ... ${TOOLS_SYSTEM_IP}
+ ... sudo dpctl unix:/tmp/s1 meter-mod cmd=add,flags=1,meter=1 drop:rate=100
+ Run Command On Remote System
+ ... ${TOOLS_SYSTEM_IP}
+ ... sudo dpctl unix:/tmp/s1 flow-mod table=0,cmd=add in_port=1 meter:1 apply:output=2
Run Command On Remote System ${TOOLS_SYSTEM_IP} sudo dpctl unix:/tmp/s1 ping 10
Run Command On Remote System ${TOOLS_SYSTEM_IP} sudo dpctl unix:/tmp/s2 ping 10
*** Settings ***
-Documentation Test suite for Hbase DataStore PortStats Verification
-Suite Setup Initialize the Tsdr Suite
-Suite Teardown Stop Tsdr Suite
-Metadata https://bugs.opendaylight.org/show_bug.cgi?id=5068 ${EMPTY}
-Library SSHLibrary
-Library Collections
-Library String
-Library RequestsLibrary
-Library ../../../libraries/Common.py
-Resource ../../../libraries/CompareStream.robot
-Resource ../../../libraries/KarafKeywords.robot
-Resource ../../../libraries/TsdrUtils.robot
-Variables ../../../variables/Variables.py
+Documentation Test suite for Hbase DataStore PortStats Verification
+Metadata https://bugs.opendaylight.org/show_bug.cgi?id=5068 ${EMPTY}
+
+Library SSHLibrary
+Library Collections
+Library String
+Library RequestsLibrary
+Library ../../../libraries/Common.py
+Resource ../../../libraries/CompareStream.robot
+Resource ../../../libraries/KarafKeywords.robot
+Resource ../../../libraries/TsdrUtils.robot
+Variables ../../../variables/Variables.py
+
+Suite Setup Initialize the Tsdr Suite
+Suite Teardown Stop Tsdr Suite
+
*** Variables ***
-@{INTERFACE_METRICS} TransmittedPackets TransmittedBytes TransmitErrors TransmitDrops ReceivedPackets ReceivedBytes ReceiveOverRunError
-... ReceiveFrameError ReceiveErrors ReceiveDrops ReceiveCrcError CollisionCount
-&{HEADERS_QUERY} Content-Type=application/json Content-Type=application/json
+@{INTERFACE_METRICS}
+... TransmittedPackets
+... TransmittedBytes
+... TransmitErrors
+... TransmitDrops
+... ReceivedPackets
+... ReceivedBytes
+... ReceiveOverRunError
+... ReceiveFrameError
+... ReceiveErrors
+... ReceiveDrops
+... ReceiveCrcError
+... CollisionCount
+&{HEADERS_QUERY} Content-Type=application/json Content-Type=application/json
+
*** Test Cases ***
Init Variables
Wait Until Keyword Succeeds 5x 3 sec Verify TSDR Configuration Interval ${default_poll}
[Teardown] Report_Failure_Due_To_Bug 5068
+
*** Keywords ***
Init Variables Master
[Documentation] Sets variables specific to latest(master) version
... QUEUESTATS
Set Suite Variable ${TSDR_PORTSTATS} tsdr:list PORTSTATS
Set Suite Variable ${CONFIG_INTERVAL} /restconf/config/tsdr-openflow-statistics-collector:TSDROSCConfig
- Set Suite Variable ${OPER_INTERVAL} /restconf/operations/tsdr-openflow-statistics-collector:setPollingInterval
+ Set Suite Variable
+ ... ${OPER_INTERVAL}
+ ... /restconf/operations/tsdr-openflow-statistics-collector:setPollingInterval
Set Suite Variable ${default_poll} 15000
set Suite Variable ${non_default_poll} 20000
set Suite Variable ${node_connector} Node:openflow:1,NodeConnector:1
Create Session session http://${ODL_SYSTEM_IP}:${RESTCONFPORT} auth=${AUTH} headers=${HEADERS_QUERY}
Verify TSDR Configuration Interval
- [Arguments] ${interval}
[Documentation] Verify Configuration interval of TSDR Collection
- ${resp} RequestsLibrary.Get Request session ${CONFIG_INTERVAL}
+ [Arguments] ${interval}
+ ${resp}= RequestsLibrary.Get Request session ${CONFIG_INTERVAL}
Should Be Equal As Strings ${resp.status_code} 200
Should Contain ${resp.content} ${interval}
Post TSDR Configuration Interval
- [Arguments] ${interval}
[Documentation] Configuration TSDR collection interval ${interval}
- ${p1} Create Dictionary interval=${interval}
- ${p2} Create Dictionary input=${p1}
+ [Arguments] ${interval}
+ ${p1}= Create Dictionary interval=${interval}
+ ${p2}= Create Dictionary input=${p1}
${p2_json}= json.dumps ${p2}
- ${resp} RequestsLibrary.Post Request session ${OPER_INTERVAL} data=${p2_json}
+ ${resp}= RequestsLibrary.Post Request session ${OPER_INTERVAL} data=${p2_json}
Should Be Equal As Strings ${resp.status_code} 200
*** Settings ***
-Documentation Test suite for Hbase DataStore Flow Stats Verification
-Suite Setup Start Tsdr Suite
-Suite Teardown Stop Tsdr Suite
-Library SSHLibrary
-Library Collections
-Library String
-Library ../../../libraries/Common.py
-Resource ../../../libraries/CompareStream.robot
-Resource ../../../libraries/KarafKeywords.robot
-Resource ../../../libraries/TsdrUtils.robot
-Variables ../../../variables/Variables.py
+Documentation Test suite for Hbase DataStore Flow Stats Verification
+
+Library SSHLibrary
+Library Collections
+Library String
+Library ../../../libraries/Common.py
+Resource ../../../libraries/CompareStream.robot
+Resource ../../../libraries/KarafKeywords.robot
+Resource ../../../libraries/TsdrUtils.robot
+Variables ../../../variables/Variables.py
+
+Suite Setup Start Tsdr Suite
+Suite Teardown Stop Tsdr Suite
+
*** Variables ***
-@{FLOW_METRICS} PacketCount ByteCount
+@{FLOW_METRICS} PacketCount ByteCount
+
*** Test Cases ***
Init Variables
Should Contain ${Line1} ByteCount
Verify the Metrics Attributes on Hbase Client ByteCount ${node_connector} ${flowstats}
+
*** Keywords ***
Init Variables Master
[Documentation] Sets variables specific to latest(master) version
*** Settings ***
-Documentation Test suite for Hbase DataStore Flow Table Stats Verification
-Suite Setup Start Tsdr Suite
-Suite Teardown Stop Tsdr Suite
-Library SSHLibrary
-Library Collections
-Library String
-Library ../../../libraries/Common.py
-Resource ../../../libraries/CompareStream.robot
-Resource ../../../libraries/KarafKeywords.robot
-Resource ../../../libraries/TsdrUtils.robot
-Variables ../../../variables/Variables.py
+Documentation Test suite for Hbase DataStore Flow Table Stats Verification
+
+Library SSHLibrary
+Library Collections
+Library String
+Library ../../../libraries/Common.py
+Resource ../../../libraries/CompareStream.robot
+Resource ../../../libraries/KarafKeywords.robot
+Resource ../../../libraries/TsdrUtils.robot
+Variables ../../../variables/Variables.py
+
+Suite Setup Start Tsdr Suite
+Suite Teardown Stop Tsdr Suite
+
*** Variables ***
-${TSDR_FLOWTABLE_STATS} tsdr:list FLOWTABLESTATS
+${TSDR_FLOWTABLE_STATS} tsdr:list FLOWTABLESTATS
+
*** Test Cases ***
Init Variables
Verification of TSDR FlowTableMetrics
[Documentation] Verify the TSDR FlowTableMetrics
Wait Until Keyword Succeeds 120s 1s Verify the Metric is Collected? ${TSDR_FLOWTABLE_STATS} openflow
- ${output}= Issue Command On Karaf Console ${TSDR_FLOWTABLE_STATS} ${ODL_SYSTEM_IP} ${KARAF_SHELL_PORT} 30
+ ${output}= Issue Command On Karaf Console
+ ... ${TSDR_FLOWTABLE_STATS}
+ ... ${ODL_SYSTEM_IP}
+ ... ${KARAF_SHELL_PORT}
+ ... 30
Should Contain ${output} openflow
Verification of FlowTableMetrics on Karaf Console
[Documentation] Verify the FlowTableMetrics has been updated on HBase Datastore
Verify the Metrics Attributes on Hbase Client PacketLookup ${node_connector} ${flowtablestats}
+
*** Keywords ***
Init Variables Master
[Documentation] Sets variables specific to latest(master) version
*** Settings ***
-Documentation Test suite for Hbase DataStore Queue Stats Verification
-Suite Setup Run Keywords Start Tsdr Suite Configuration of Queue on Switch
-Suite Teardown Stop Tsdr Suite
-Library SSHLibrary
-Library Collections
-Library String
-Library ../../../libraries/Common.py
-Resource ../../../libraries/CompareStream.robot
-Resource ../../../libraries/KarafKeywords.robot
-Resource ../../../libraries/TsdrUtils.robot
-Variables ../../../variables/Variables.py
+Documentation Test suite for Hbase DataStore Queue Stats Verification
+
+Library SSHLibrary
+Library Collections
+Library String
+Library ../../../libraries/Common.py
+Resource ../../../libraries/CompareStream.robot
+Resource ../../../libraries/KarafKeywords.robot
+Resource ../../../libraries/TsdrUtils.robot
+Variables ../../../variables/Variables.py
+
+Suite Setup Run Keywords Start Tsdr Suite Configuration of Queue on Switch
+Suite Teardown Stop Tsdr Suite
+
*** Variables ***
@{QUEUE_METRICS} TransmittedPackets TransmittedBytes TransmissionErrors
+
*** Test Cases ***
Init Variables
[Documentation] Initialize ODL version specific variables using resource CompareStream.
[Documentation] Verify the QueueMetrics has been updated on HBase Datastore
Verify the Metrics Attributes on Hbase Client TransmissionErrors ${node_connector} ${queuestats}
+
*** Keywords ***
Configuration of Queue on Switch
[Documentation] Queue configuration on openvswitch
*** Settings ***
-Documentation Test suite for HBase Syslog Verification
-Library SSHLibrary
-Library Collections
-Library String
-Library ../../../libraries/Common.py
-Resource ../../../libraries/KarafKeywords.robot
-Resource ../../../libraries/TsdrUtils.robot
-Variables ../../../variables/Variables.py
+Documentation Test suite for HBase Syslog Verification
+
+Library SSHLibrary
+Library Collections
+Library String
+Library ../../../libraries/Common.py
+Resource ../../../libraries/KarafKeywords.robot
+Resource ../../../libraries/TsdrUtils.robot
+Variables ../../../variables/Variables.py
+
*** Test Cases ***
Verification of TSDR HBase Feature Installation
*** Settings ***
-Documentation Test suite for Hbase DataStore Netflow Stats Verification
-Suite Setup Initialize Netflow
-Suite Teardown Stop Tsdr Suite
-Library SSHLibrary
-Library Collections
-Library String
-Library ../../../libraries/Common.py
-Resource ../../../libraries/KarafKeywords.robot
-Resource ../../../libraries/TsdrUtils.robot
-Variables ../../../variables/Variables.py
+Documentation Test suite for Hbase DataStore Netflow Stats Verification
+
+Library SSHLibrary
+Library Collections
+Library String
+Library ../../../libraries/Common.py
+Resource ../../../libraries/KarafKeywords.robot
+Resource ../../../libraries/TsdrUtils.robot
+Variables ../../../variables/Variables.py
+
+Suite Setup Initialize Netflow
+Suite Teardown Stop Tsdr Suite
+
*** Variables ***
-${IP_1} 10.0.0.1
-${IP_2} 10.0.0.2
-${NODE_ID} 127.0.0.1
-${engine_type} 11
-${engine_id} 11
-${nextHop} 0
-${port} 0
-${protocol} 1
-${int1} 1
-${int2} 2
-${version} 5
+${IP_1} 10.0.0.1
+${IP_2} 10.0.0.2
+${NODE_ID} 127.0.0.1
+${engine_type} 11
+${engine_id} 11
+${nextHop} 0
+${port} 0
+${protocol} 1
+${int1} 1
+${int2} 2
+${version} 5
+
*** Test Cases ***
Verification of Full Record Text for Netflow Dumps
[Documentation] Verify the Netflow Record Text Hbase client
- ${out}= Query the Data from HBaseClient scan 'NETFLOW',{ COLUMNS => 'c1' , LIMIT => 10, FILTER => "ValueFilter( =, 'regexstring:srcAddr=${IP_2}' )" }
+ ${out}= Query the Data from HBaseClient
+ ... scan 'NETFLOW',{ COLUMNS => 'c1' , LIMIT => 10, FILTER => "ValueFilter( =, 'regexstring:srcAddr=${IP_2}' )" }
Should Contain ${out} srcAddr=${IP_2}
Should Contain ${out} dstAddr=${IP_1}
Should Contain ${out} srcPort=${port}
Should Contain ${out} engine_id
Should Contain ${out} input=${int2}
Should Contain ${out} output=${int1}
- ${out}= Query the Data from HBaseClient scan 'NETFLOW',{ COLUMNS => 'c1' , LIMIT => 10, FILTER => "ValueFilter( =, 'regexstring:srcAddr=${IP_1}' )" }
+ ${out}= Query the Data from HBaseClient
+ ... scan 'NETFLOW',{ COLUMNS => 'c1' , LIMIT => 10, FILTER => "ValueFilter( =, 'regexstring:srcAddr=${IP_1}' )" }
Should Contain ${out} srcAddr=${IP_1}
Should Contain ${out} dstAddr=${IP_2}
Should Contain ${out} srcPort=${port}
Verification of Metric Record for Netflow Dumps
[Documentation] Verify the Netflow Metric Record Hbase client
- ${out}= Query the Data from HBaseClient scan 'NETFLOW',{ COLUMNS => 'c1:dstAddr' , LIMIT => 10, FILTER => "ValueFilter( =, 'binaryprefix:${IP_1}' )" }
+ ${out}= Query the Data from HBaseClient
+ ... scan 'NETFLOW',{ COLUMNS => 'c1:dstAddr' , LIMIT => 10, FILTER => "ValueFilter( =, 'binaryprefix:${IP_1}' )" }
Should Contain ${out} value=${IP_1}
- ${out}= Query the Data from HBaseClient scan 'NETFLOW',{ COLUMNS => 'c1:srcAddr' , LIMIT => 10, FILTER => "ValueFilter( =, 'binaryprefix:${IP_1}' )" }
+ ${out}= Query the Data from HBaseClient
+ ... scan 'NETFLOW',{ COLUMNS => 'c1:srcAddr' , LIMIT => 10, FILTER => "ValueFilter( =, 'binaryprefix:${IP_1}' )" }
Should Contain ${out} value=${IP_1}
- ${out}= Query the Data from HBaseClient scan 'NETFLOW',{ COLUMNS => 'c1:dstAddr' , LIMIT => 10, FILTER => "ValueFilter( =, 'binaryprefix:${IP_2}' )" }
+ ${out}= Query the Data from HBaseClient
+ ... scan 'NETFLOW',{ COLUMNS => 'c1:dstAddr' , LIMIT => 10, FILTER => "ValueFilter( =, 'binaryprefix:${IP_2}' )" }
Should Contain ${out} value=${IP_2}
- ${out}= Query the Data from HBaseClient scan 'NETFLOW',{ COLUMNS => 'c1:srcAddr' , LIMIT => 10, FILTER => "ValueFilter( =, 'binaryprefix:${IP_2}' )" }
+ ${out}= Query the Data from HBaseClient
+ ... scan 'NETFLOW',{ COLUMNS => 'c1:srcAddr' , LIMIT => 10, FILTER => "ValueFilter( =, 'binaryprefix:${IP_2}' )" }
Should Contain ${out} value=${IP_2}
- ${out}= Query the Data from HBaseClient scan 'NETFLOW',{ COLUMNS => 'c1:input' , LIMIT => 10, FILTER => "ValueFilter( =, 'binaryprefix:${int1}' )" }
+ ${out}= Query the Data from HBaseClient
+ ... scan 'NETFLOW',{ COLUMNS => 'c1:input' , LIMIT => 10, FILTER => "ValueFilter( =, 'binaryprefix:${int1}' )" }
Should Contain ${out} value=${int1}
- ${out}= Query the Data from HBaseClient scan 'NETFLOW',{ COLUMNS => 'c1:output' , LIMIT => 10, FILTER => "ValueFilter( =, 'binaryprefix:${int2}' )" }
+ ${out}= Query the Data from HBaseClient
+ ... scan 'NETFLOW',{ COLUMNS => 'c1:output' , LIMIT => 10, FILTER => "ValueFilter( =, 'binaryprefix:${int2}' )" }
Should Contain ${out} value=${int2}
- ${out}= Query the Data from HBaseClient scan 'NETFLOW',{ COLUMNS => 'c1:input' , LIMIT => 10, FILTER => "ValueFilter( =, 'binaryprefix:${int2}' )" }
+ ${out}= Query the Data from HBaseClient
+ ... scan 'NETFLOW',{ COLUMNS => 'c1:input' , LIMIT => 10, FILTER => "ValueFilter( =, 'binaryprefix:${int2}' )" }
Should Contain ${out} value=${int2}
- ${out}= Query the Data from HBaseClient scan 'NETFLOW',{ COLUMNS => 'c1:output' , LIMIT => 10, FILTER => "ValueFilter( =, 'binaryprefix:${int1}' )" }
+ ${out}= Query the Data from HBaseClient
+ ... scan 'NETFLOW',{ COLUMNS => 'c1:output' , LIMIT => 10, FILTER => "ValueFilter( =, 'binaryprefix:${int1}' )" }
Should Contain ${out} value=${int1}
${out}= Query the Data from HBaseClient scan 'NETFLOW',{ COLUMNS => 'c1:flowDuration' , LIMIT => 10}
Should Contain ${out} flowDuration
- ${out}= Query the Data from HBaseClient scan 'NETFLOW',{ COLUMNS => 'c1:nextHop' , LIMIT => 10, FILTER => "ValueFilter( =, 'binaryprefix:${nextHop}' )" }
+ ${out}= Query the Data from HBaseClient
+ ... scan 'NETFLOW',{ COLUMNS => 'c1:nextHop' , LIMIT => 10, FILTER => "ValueFilter( =, 'binaryprefix:${nextHop}' )" }
Should Contain ${out} value=${nextHop}
- ${out}= Query the Data from HBaseClient scan 'NETFLOW',{ COLUMNS => 'c1:version' , LIMIT => 10, FILTER => "ValueFilter( =, 'binaryprefix:${version}' )" }
+ ${out}= Query the Data from HBaseClient
+ ... scan 'NETFLOW',{ COLUMNS => 'c1:version' , LIMIT => 10, FILTER => "ValueFilter( =, 'binaryprefix:${version}' )" }
Should Contain ${out} value=${version}
- ${out}= Query the Data from HBaseClient scan 'NETFLOW',{ COLUMNS => 'c1:protocol' , LIMIT => 10, FILTER => "ValueFilter( =, 'binaryprefix:${protocol}' )" }
+ ${out}= Query the Data from HBaseClient
+ ... scan 'NETFLOW',{ COLUMNS => 'c1:protocol' , LIMIT => 10, FILTER => "ValueFilter( =, 'binaryprefix:${protocol}' )" }
Should Contain ${out} value=${protocol}
+
*** Keywords ***
Initialize Netflow
[Documentation] Initialize Netflow setup and start collecting the netflow samples.
*** Settings ***
-Documentation Test suite for HSQLDB DataStore InterfaceMetrics Verification
-Suite Setup Start Tsdr Suite
-Suite Teardown Stop Tsdr Suite
-Library SSHLibrary
-Library Collections
-Library String
-Library ../../../libraries/Common.py
-Resource ../../../libraries/CompareStream.robot
-Resource ../../../libraries/KarafKeywords.robot
-Resource ../../../libraries/TsdrUtils.robot
-Variables ../../../variables/Variables.py
+Documentation Test suite for HSQLDB DataStore InterfaceMetrics Verification
+
+Library SSHLibrary
+Library Collections
+Library String
+Library ../../../libraries/Common.py
+Resource ../../../libraries/CompareStream.robot
+Resource ../../../libraries/KarafKeywords.robot
+Resource ../../../libraries/TsdrUtils.robot
+Variables ../../../variables/Variables.py
+
+Suite Setup Start Tsdr Suite
+Suite Teardown Stop Tsdr Suite
+
*** Variables ***
-@{INTERFACE_METRICS} TransmittedPackets TransmittedBytes TransmitErrors TransmitDrops ReceivedPackets ReceivedBytes ReceiveOverRunError
-... ReceiveFrameError ReceiveErrors ReceiveDrops ReceiveCrcError CollisionCount
+@{INTERFACE_METRICS}
+... TransmittedPackets
+... TransmittedBytes
+... TransmitErrors
+... TransmitDrops
+... ReceivedPackets
+... ReceivedBytes
+... ReceiveOverRunError
+... ReceiveFrameError
+... ReceiveErrors
+... ReceiveDrops
+... ReceiveCrcError
+... CollisionCount
+
*** Test Cases ***
Init Variables
Verification of TSDR HSQLDB Feature Installation
[Documentation] Install and Verify the TSDR HSQLDB Datastore and JDBC
COMMENT Install a Feature odl-tsdr-hsqldb ${ODL_SYSTEM_IP} ${KARAF_SHELL_PORT} 60
- COMMENT Install a Feature odl-tsdr-openflow-statistics-collector ${ODL_SYSTEM_IP} ${KARAF_SHELL_PORT} 60
+ COMMENT
+ ... Install a Feature
+ ... odl-tsdr-openflow-statistics-collector
+ ... ${ODL_SYSTEM_IP}
+ ... ${KARAF_SHELL_PORT}
+ ... 60
Verify Feature Is Installed ${HSQLDB_INSTALL}
Verify Feature Is Installed odl-tsdr-core
Should Contain ${output} ${list}
END
+
*** Keywords ***
Init Variables Master
[Documentation] Sets variables specific to latest(master) version
*** Settings ***
-Documentation Test suite for HSQLDB DataStore Flow Metrics Verification
-Suite Setup Start Tsdr Suite
-Suite Teardown Stop Tsdr Suite
-Library SSHLibrary
-Library Collections
-Library String
-Library ../../../libraries/Common.py
-Resource ../../../libraries/CompareStream.robot
-Resource ../../../libraries/KarafKeywords.robot
-Resource ../../../libraries/TsdrUtils.robot
-Variables ../../../variables/Variables.py
+Documentation Test suite for HSQLDB DataStore Flow Metrics Verification
+
+Library SSHLibrary
+Library Collections
+Library String
+Library ../../../libraries/Common.py
+Resource ../../../libraries/CompareStream.robot
+Resource ../../../libraries/KarafKeywords.robot
+Resource ../../../libraries/TsdrUtils.robot
+Variables ../../../variables/Variables.py
+
+Suite Setup Start Tsdr Suite
+Suite Teardown Stop Tsdr Suite
+
*** Variables ***
-@{FLOW_METRICS} PacketCount ByteCount
+@{FLOW_METRICS} PacketCount ByteCount
+
*** Test Cases ***
Init Variables
Should Contain ${output} ${list}
END
+
*** Keywords ***
Init Variables Master
[Documentation] Sets variables specific to latest(master) version
*** Settings ***
-Documentation Test suite for HSQLDB DataStore Flow Table Metrics Verification
-Suite Setup Start Tsdr Suite
-Suite Teardown Stop Tsdr Suite
-Library SSHLibrary
-Library Collections
-Library String
-Library ../../../libraries/Common.py
-Resource ../../../libraries/CompareStream.robot
-Resource ../../../libraries/KarafKeywords.robot
-Resource ../../../libraries/TsdrUtils.robot
-Variables ../../../variables/Variables.py
+Documentation Test suite for HSQLDB DataStore Flow Table Metrics Verification
+
+Library SSHLibrary
+Library Collections
+Library String
+Library ../../../libraries/Common.py
+Resource ../../../libraries/CompareStream.robot
+Resource ../../../libraries/KarafKeywords.robot
+Resource ../../../libraries/TsdrUtils.robot
+Variables ../../../variables/Variables.py
+
+Suite Setup Start Tsdr Suite
+Suite Teardown Stop Tsdr Suite
+
*** Variables ***
@{FLOWTABLE_METRICS} ActiveFlows PacketLookup PacketMatch
+
*** Test Cases ***
Init Variables
[Documentation] Initialize ODL version specific variables
Verification of TSDR FLOWTABLESTATS
[Documentation] Verify the TSDR FlowiTableStats
- Wait Until Keyword Succeeds 60s 1s Verify the Metric is Collected? ${TSDR_FLOWTABLE_STATS}| grep ActiveFlow | grep openflow:1 FLOWTABLESTATS
- ${output}= Issue Command On Karaf Console ${TSDR_FLOWTABLE_STATS}| grep openflow:1 | head ${ODL_SYSTEM_IP} ${KARAF_SHELL_PORT} 180
+ Wait Until Keyword Succeeds
+ ... 60s
+ ... 1s
+ ... Verify the Metric is Collected?
+ ... ${TSDR_FLOWTABLE_STATS}| grep ActiveFlow | grep openflow:1
+ ... FLOWTABLESTATS
+ ${output}= Issue Command On Karaf Console
+ ... ${TSDR_FLOWTABLE_STATS}| grep openflow:1 | head
+ ... ${ODL_SYSTEM_IP}
+ ... ${KARAF_SHELL_PORT}
+ ... 180
FOR ${list} IN @{FLOWTABLE_METRICS}
Should Contain ${output} ${list}
END
+
*** Keywords ***
Init Variables Master
[Documentation] Sets variables specific to latest(master) version
*** Settings ***
-Documentation Test suite for HSQLDB DataStore Queue Metrics Verification
-Suite Setup Run Keywords Start Tsdr Suite Configuration of Queue on Switch
-Suite Teardown Stop Tsdr Suite
-Library SSHLibrary
-Library Collections
-Library String
-Library ../../../libraries/Common.py
-Resource ../../../libraries/CompareStream.robot
-Resource ../../../libraries/KarafKeywords.robot
-Resource ../../../libraries/TsdrUtils.robot
-Variables ../../../variables/Variables.py
+Documentation Test suite for HSQLDB DataStore Queue Metrics Verification
+
+Library SSHLibrary
+Library Collections
+Library String
+Library ../../../libraries/Common.py
+Resource ../../../libraries/CompareStream.robot
+Resource ../../../libraries/KarafKeywords.robot
+Resource ../../../libraries/TsdrUtils.robot
+Variables ../../../variables/Variables.py
+
+Suite Setup Run Keywords Start Tsdr Suite Configuration of Queue on Switch
+Suite Teardown Stop Tsdr Suite
+
*** Variables ***
@{QUEUE_METRICS} TransmittedPackets TransmittedBytes TransmissionErrors
+
*** Test Cases ***
Init Variables
[Documentation] Initialize ODL version specific variables
Verify the QueueStats attributes exist thru Karaf console
[Documentation] Verify the QueueMetrics attributes exist on Karaf Console
Wait Until Keyword Succeeds 60s 1s Verify the Metric is Collected? ${TSDR_QUEUE_STATS} Transmitted
- ${output}= Issue Command On Karaf Console ${TSDR_QUEUE_STATS} ${ODL_SYSTEM_IP} ${KARAF_SHELL_PORT} 30
+ ${output}= Issue Command On Karaf Console
+ ... ${TSDR_QUEUE_STATS}
+ ... ${ODL_SYSTEM_IP}
+ ... ${KARAF_SHELL_PORT}
+ ... 30
FOR ${list} IN @{QUEUE_METRICS}
Should Contain ${output} ${list}
END
-*** Keyword ***
+
+*** Keywords ***
Configuration of Queue on Switch
[Documentation] Queue configuration on openvswitch
Configure the Queue on Switch s2-eth2
*** Settings ***
-Documentation Test suite for HSQLDB DataStore Syslog Stats Verification
-Library SSHLibrary
-Library Collections
-Library String
-Library ../../../libraries/Common.py
-Resource ../../../libraries/KarafKeywords.robot
-Resource ../../../libraries/TsdrUtils.robot
-Variables ../../../variables/Variables.py
+Documentation Test suite for HSQLDB DataStore Syslog Stats Verification
+
+Library SSHLibrary
+Library Collections
+Library String
+Library ../../../libraries/Common.py
+Resource ../../../libraries/KarafKeywords.robot
+Resource ../../../libraries/TsdrUtils.robot
+Variables ../../../variables/Variables.py
+
*** Test Cases ***
Verification of TSDR HSQLDB Feature Installation
*** Settings ***
-Documentation Test suite for HSQLDB DataStore NetFlow Stats Verification
-Suite Setup Initialize Netflow
-Suite Teardown Stop Tsdr Suite
-Library SSHLibrary
-Library Collections
-Library String
-Library ../../../libraries/Common.py
-Resource ../../../libraries/KarafKeywords.robot
-Resource ../../../libraries/TsdrUtils.robot
-Variables ../../../variables/Variables.py
+Documentation Test suite for HSQLDB DataStore NetFlow Stats Verification
+
+Library SSHLibrary
+Library Collections
+Library String
+Library ../../../libraries/Common.py
+Resource ../../../libraries/KarafKeywords.robot
+Resource ../../../libraries/TsdrUtils.robot
+Variables ../../../variables/Variables.py
+
+Suite Setup Initialize Netflow
+Suite Teardown Stop Tsdr Suite
+
*** Variables ***
-${IP_1} 10.0.0.1
-${IP_2} 10.0.0.2
-${NODE_ID} 127.0.0.1
-${engine_type} 11
-${engine_id} 11
-${nexthop} 0
-${port} 0
-${prot} 1
-${int1} 1
-${int2} 2
-${version} 5
+${IP_1} 10.0.0.1
+${IP_2} 10.0.0.2
+${NODE_ID} 127.0.0.1
+${engine_type} 11
+${engine_id} 11
+${nexthop} 0
+${port} 0
+${prot} 1
+${int1} 1
+${int2} 2
+${version} 5
+
*** Test Cases ***
Verification of Full Record Text for Netflow Dumps
Should Contain ${out} dstMask=0
Should Contain ${out} srcMask=0
+
*** Keywords ***
Initialize Netflow
[Documentation] Initialize Mininet topology and check if netflow data is getting collected