Test Statistics

Total Statistics
Total
Pass
Fail
Skip
Elapsed
Pass / Fail / Skip
All Tests
20917192000:42:27
Statistics by Tag
Total
Pass
Fail
Skip
Elapsed
Pass / Fail / Skip
303000:01:02
Statistics by Suite
Total
Pass
Fail
Skip
Elapsed
Pass / Fail / Skip
20917192000:43:02
51843000:08:27
51249000:03:43
21021000:08:00
72468000:21:10
303000:00:05
303000:00:04
505000:01:24
330000:00:09

Test Execution Log

00:43:01.762 SUITE openflowplugin-clustering.txt
00:08:26.508 SUITE Cluster HA Owner Failover
00:00:04.942 SETUP SetupUtils . Setup_Utils_For_Setup_And_Teardown  
00:00:00.000 TEARDOWN RequestsLibrary . Delete All Sessions  
00:00:04.467 TEST Check Shards Status Before Fail
00:00:04.466 KEYWORD ClusterOpenFlow . Check OpenFlow Shards Status  
00:00:00.010 KEYWORD CompareStream . Run_Keyword_If_At_Least_Phosphorus   Collections.Remove Values From List ${SHARD_OPER_LIST} entity-ownership
00:00:00.000 KEYWORD BuiltIn . Log   ${SHARD_OPER_LIST}
00:00:04.445 KEYWORD ClusterManagement . Verify_Leader_Exists_For_Each_Shard   shard_name_list=${SHARD_OPER_LIST} shard_type=operational member_index_list=${controller_index_list}
00:00:04.445 FOR ${shard_name} IN @{shard_name_list}  
00:00:04.445 ITERATION ${shard_name} = inventory  
00:00:04.444 KEYWORD ClusterManagement . Get_Leader_And_Followers_For_Shard   shard_name=${shard_name} shard_type=${shard_type} validate=True member_index_list=${member_index_list} verify_restconf=${verify_restconf}
00:00:04.441 KEYWORD ${leader_list} ${follower_list} = ClusterManagement . Get_State_Info_For_Shard   shard_name=${shard_name} shard_type=${shard_type} validate=True member_index_list=${member_index_list} verify_restconf=${verify_restconf} http_timeout=${http_timeout}
00:00:00.001 KEYWORD ${index_list} = ClusterManagement . List_Indices_Or_All   given_list=${member_index_list}
00:00:00.000 KEYWORD Collections . Sort List   ${index_list}
00:00:00.000 KEYWORD ${ds_type} = BuiltIn . Set Variable If   '${shard_type}' != 'config' operational config
00:00:00.000 KEYWORD ${leader_list} = BuiltIn . Create List  
00:00:00.000 KEYWORD ${follower_list} = BuiltIn . Create List  
00:00:04.437 FOR ${index} IN @{index_list}  
00:00:02.019 ITERATION ${index} = 1  
00:00:02.194 ITERATION ${index} = 2  
00:00:00.224 ITERATION ${index} = 3  
00:00:00.223 KEYWORD ${raft_state} = ClusterManagement . Get_Raft_State_Of_Shard_At_Member   shard_name=${shard_name} shard_type=${ds_type} member_index=${index} verify_restconf=${verify_restconf} http_timeout=${http_timeout}
00:00:00.222 KEYWORD ${raft_state} = ClusterManagement . Get_Raft_Property_From_Shard_Member   RaftState ${shard_name} ${shard_type} ${member_index} verify_restconf=${verify_restconf} http_timeout=${http_timeout}
00:00:00.001 KEYWORD ${session} = ClusterManagement . Resolve_Http_Session_For_Member   member_index=${member_index}
00:00:00.218 IF ${verify_restconf}  
00:00:00.214 KEYWORD TemplatedRequests . Get_As_Json_Templated   session=${session} folder=${RESTCONF_MODULES_DIR} verify=False http_timeout=${http_timeout}
00:00:00.210 KEYWORD ${response_text} = TemplatedRequests . Get_Templated   folder=${folder} mapping=${mapping} accept=${ACCEPT_EMPTY} session=${session} normalize_json=True http_timeout=${http_timeout} log_response=${log_response}
00:00:00.062 KEYWORD ${uri} = TemplatedRequests . Resolve_Text_From_Template_Folder   folder=${folder} base_name=location extension=uri mapping=${mapping} percent_encode=True
00:00:00.006 KEYWORD ${jmes_expression} = TemplatedRequests . Resolve_Jmes_Path   ${folder}
00:00:00.006 KEYWORD ${volatiles_list} = TemplatedRequests . Resolve_Volatiles_Path   ${folder}
00:00:00.071 KEYWORD ${response_text} = TemplatedRequests . Get_From_Uri   uri=${uri} accept=${accept} session=${session} normalize_json=${normalize_json} jmes_path=${jmes_expression} http_timeout=${http_timeout} keys_with_volatiles=${volatiles_list} log_response=${log_response}
00:00:00.000 KEYWORD BuiltIn . Log   ${uri}
00:00:00.000 KEYWORD BuiltIn . Log   ${accept}
00:00:00.064 IF """${http_timeout}""" == """${EMPTY}"""  
00:00:00.062 KEYWORD ${response} = RequestsLibrary . GET On Session   ${session} url=${uri} headers=${accept}
03:45:07.679 INFO GET Request : url=http://10.30.171.229:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig headers={'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} body=None
03:45:07.679 INFO GET Response : url=http://10.30.171.229:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig status=401, reason=Unauthorized headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '414'} body=<html> <head> <meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/> <title>Error 401 Unauthorized</title> </head> <body><h2>HTTP ERROR 401 Unauthorized</h2> <table> <tr><th>URI:</th><td>/rests/data/ietf-yang-library:modules-state</td></tr> <tr><th>STATUS:</th><td>401</td></tr> <tr><th>MESSAGE:</th><td>Unauthorized</td></tr> <tr><th>SERVLET:</th><td>default</td></tr> </table> </body> </html>
03:45:07.679 FAIL HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.229:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig
00:00:00.001 ELSE  
00:00:00.000 KEYWORD TemplatedRequests . Check_Status_Code   ${response} log_response=${log_response}
00:00:00.000 IF not ${normalize_json}  
00:00:00.000 KEYWORD ${text_normalized} = norm_json . Normalize Json Text   ${response.text} jmes_path=${jmes_path} keys_with_volatiles=${keys_with_volatiles}
00:00:00.000 RETURN   ${text_normalized}
00:00:00.000 RETURN   ${response_text}
00:00:00.000 IF ${verify}  
00:00:00.000 RETURN   ${response_text}
00:00:00.000 KEYWORD ${type_class} = ClusterManagement . Resolve_Shard_Type_Class   shard_type=${shard_type}
00:00:00.000 KEYWORD ${cluster_index} = BuiltIn . Evaluate   ${member_index}+${NODE_ROLE_INDEX_START}-1
00:00:00.000 KEYWORD ${uri} = BuiltIn . Set Variable   ${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}
00:00:00.000 KEYWORD ${data_text} = TemplatedRequests . Get_As_Json_From_Uri   uri=${uri} session=${session} http_timeout=${http_timeout}
00:00:00.000 KEYWORD ${data_object} = Utils . Json Parse From String   ${data_text}
00:00:00.000 KEYWORD ${value} = Collections . Get From Dictionary   ${data_object} value
00:00:00.000 KEYWORD ${raft_property} = Collections . Get From Dictionary   ${value} ${property}
00:00:00.000 RETURN   ${raft_property}
00:00:00.000 RETURN   ${raft_state}
00:00:00.000 IF 'Follower' == '${raft_state}'  
00:00:00.000 ELSE IF 'Leader' == '${raft_state}'  
00:00:00.000 ELSE IF ${validate}  
00:00:00.000 RETURN   ${leader_list} ${follower_list}
00:00:00.000 KEYWORD ${leader_count} = BuiltIn . Get Length   ${leader_list}
00:00:00.000 IF ${leader_count} < 1  
00:00:00.000 KEYWORD BuiltIn . Length Should Be   ${leader_list} ${1} Too many Leaders.
00:00:00.000 KEYWORD ${leader} = Collections . Get From List   ${leader_list} 0
00:00:00.000 RETURN   ${leader} ${follower_list}
00:00:00.000 KEYWORD ClusterManagement . Verify_Leader_Exists_For_Each_Shard   shard_name_list=${SHARD_CONF_LIST} shard_type=config member_index_list=${controller_index_list}
00:00:08.774 TEST Start Mininet Multiple Connections
00:00:00.195 TEST Check Entity Owner Status And Find Owner and Successor Before Fail
00:00:04.829 TEST Reconnect Extra Switches To Successors And Check OVS Connections
00:00:05.029 TEST Check Network Operational Information Before Fail
00:00:05.023 KEYWORD ClusterOpenFlow . Check OpenFlow Network Operational Information For Sample Topology  
00:00:00.000 KEYWORD ${dictionary} = BuiltIn . Create Dictionary   openflow:1=4 openflow:2=5 openflow:3=5
00:00:05.020 KEYWORD BuiltIn . Wait Until Keyword Succeeds   5s 1s ClusterManagement.Check_Item_Occurrence_Member_List_Or_All uri=${RFC8040_OPERATIONAL_NODES_API} dictionary=${dictionary} member_index_list=${controller_index_list}
00:00:00.158 KEYWORD ClusterManagement . Check_Item_Occurrence_Member_List_Or_All   uri=${RFC8040_OPERATIONAL_NODES_API} dictionary=${dictionary} member_index_list=${controller_index_list}
00:00:00.001 KEYWORD ${index_list} = ClusterManagement . List_Indices_Or_All   given_list=${member_index_list}
00:00:00.155 FOR ${index} IN @{index_list}  
00:00:00.063 ITERATION ${index} = 1  
00:00:00.071 ITERATION ${index} = 2  
00:00:00.020 ITERATION ${index} = 3  
00:00:00.016 KEYWORD ${data} = ClusterManagement . Get_From_Member   uri=${uri} member_index=${index}
00:00:00.001 KEYWORD ${session} = ClusterManagement . Resolve_Http_Session_For_Member   member_index=${member_index}
00:00:00.014 KEYWORD ${response_text} = TemplatedRequests . Get_From_Uri   uri=${uri} accept=${access} session=${session}
00:00:00.000 KEYWORD BuiltIn . Log   ${uri}
00:00:00.000 KEYWORD BuiltIn . Log   ${accept}
00:00:00.007 IF """${http_timeout}""" == """${EMPTY}"""  
00:00:00.005 KEYWORD ${response} = RequestsLibrary . GET On Session   ${session} url=${uri} headers=${accept}
03:45:26.519 INFO GET Request : url=http://10.30.171.229:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig path_url=/rests/data/opendaylight-inventory:nodes?content=nonconfig headers={'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} body=None
03:45:26.519 INFO GET Response : url=http://10.30.171.229:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig status=401, reason=Unauthorized headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '411'} body=<html> <head> <meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/> <title>Error 401 Unauthorized</title> </head> <body><h2>HTTP ERROR 401 Unauthorized</h2> <table> <tr><th>URI:</th><td>/rests/data/opendaylight-inventory:nodes</td></tr> <tr><th>STATUS:</th><td>401</td></tr> <tr><th>MESSAGE:</th><td>Unauthorized</td></tr> <tr><th>SERVLET:</th><td>default</td></tr> </table> </body> </html>
03:45:26.519 FAIL HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.229:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig
00:00:00.000 ELSE  
00:00:00.000 KEYWORD TemplatedRequests . Check_Status_Code   ${response} log_response=${log_response}
00:00:00.000 IF not ${normalize_json}  
00:00:00.000 KEYWORD ${text_normalized} = norm_json . Normalize Json Text   ${response.text} jmes_path=${jmes_path} keys_with_volatiles=${keys_with_volatiles}
00:00:00.000 RETURN   ${text_normalized}
00:00:00.000 RETURN   ${response_text}
00:00:00.000 KEYWORD Utils . Check Item Occurrence   ${data} ${dictionary}
03:45:26.522 FAIL Keyword 'ClusterManagement.Check_Item_Occurrence_Member_List_Or_All' failed after retrying for 5 seconds. The last error was: HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.229:8181/rests/data/opendaylight-inventory:nodes?content=nonconfig
00:00:00.000 KEYWORD ${dictionary} = BuiltIn . Create Dictionary   openflow:1=21 openflow:2=19 openflow:3=19
00:00:00.000 KEYWORD BuiltIn . Wait Until Keyword Succeeds   5s 1s ClusterManagement.Check_Item_Occurrence_Member_List_Or_All uri=${RFC8040_OPERATIONAL_TOPO_API} dictionary=${dictionary} member_index_list=${controller_index_list}
00:00:05.866 TEST Add Configuration In Owner and Verify Before Fail
00:00:05.855 KEYWORD ClusterOpenFlow . Add Sample Flow And Verify   ${original_owner}
00:00:00.000 KEYWORD ${body} = OperatingSystem . Get File   /w/workspace/openflowplugin-csit-3node-clustering-only-calcium/test/csit/libraries/../variables/openflowplugin/sample_flow_1.json
00:00:00.000 IF '${ODL_OF_PLUGIN}' == 'helium'  
00:00:00.003 IF '${ODL_OF_PLUGIN}' == 'lithium'  
00:00:05.836 KEYWORD ClusterManagement . Put_As_Json_And_Check_Member_List_Or_All   ${config_table_0}/flow=1 ${body} ${controller_index} ${controller_index_list}
00:00:00.061 KEYWORD ${response_text} = ClusterManagement . Put_As_Json_To_Member   uri=${uri} data=${data} member_index=${member_index}
00:00:05.774 KEYWORD BuiltIn . Wait Until Keyword Succeeds   5s 1s Check_Json_Member_List_Or_All uri=${uri}?content=config expected_data=${data} member_index_list=${member_index_list}
00:00:00.120 KEYWORD ClusterManagement . Check_Json_Member_List_Or_All   uri=${uri}?content=config expected_data=${data} member_index_list=${member_index_list}
00:00:00.002 KEYWORD ${index_list} = ClusterManagement . List_Indices_Or_All   given_list=${member_index_list}
00:00:00.118 FOR ${index} IN @{index_list}  
00:00:00.047 ITERATION ${index} = 1  
00:00:00.051 ITERATION ${index} = 2  
00:00:00.019 ITERATION ${index} = 3  
00:00:00.015 KEYWORD ${data} = ClusterManagement . Get_From_Member   uri=${uri} member_index=${index}
00:00:00.001 KEYWORD ${session} = ClusterManagement . Resolve_Http_Session_For_Member   member_index=${member_index}
00:00:00.013 KEYWORD ${response_text} = TemplatedRequests . Get_From_Uri   uri=${uri} accept=${access} session=${session}
00:00:00.000 KEYWORD BuiltIn . Log   ${uri}
00:00:00.000 KEYWORD BuiltIn . Log   ${accept}
00:00:00.006 IF """${http_timeout}""" == """${EMPTY}"""  
00:00:00.004 KEYWORD ${response} = RequestsLibrary . GET On Session   ${session} url=${uri} headers=${accept}
03:45:32.386 INFO GET Request : url=http://10.30.171.229:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=1?content=config path_url=/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=1?content=config headers={'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} body=None
03:45:32.386 INFO GET Response : url=http://10.30.171.229:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=1?content=config status=401, reason=Unauthorized headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '464'} body=<html> <head> <meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/> <title>Error 401 Unauthorized</title> </head> <body><h2>HTTP ERROR 401 Unauthorized</h2> <table> <tr><th>URI:</th><td>/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=1</td></tr> <tr><th>STATUS:</th><td>401</td></tr> <tr><th>MESSAGE:</th><td>Unauthorized</td></tr> <tr><th>SERVLET:</th><td>default</td></tr> </table> </body> </html>
03:45:32.386 FAIL HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.229:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=1?content=config
00:00:00.000 ELSE  
00:00:00.000 KEYWORD TemplatedRequests . Check_Status_Code   ${response} log_response=${log_response}
00:00:00.000 IF not ${normalize_json}  
00:00:00.000 KEYWORD ${text_normalized} = norm_json . Normalize Json Text   ${response.text} jmes_path=${jmes_path} keys_with_volatiles=${keys_with_volatiles}
00:00:00.000 RETURN   ${text_normalized}
00:00:00.000 RETURN   ${response_text}
00:00:00.000 KEYWORD TemplatedRequests . Normalize_Jsons_And_Compare   ${expected_data} ${data}
03:45:32.388 FAIL Keyword 'Check_Json_Member_List_Or_All' failed after retrying for 5 seconds. The last error was: HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.229:8181/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/flow-node-inventory:table=0/flow=1?content=config
00:00:00.000 RETURN   ${response_text}
00:00:00.000 KEYWORD BuiltIn . Wait Until Keyword Succeeds   15s 1s ClusterManagement.Check_Item_Occurrence_Member_List_Or_All uri=${operational_table_0} dictionary=${dictionary} member_index_list=${controller_index_list}
00:00:05.825 TEST Modify Configuration In Owner and Verify Before Fail
00:00:05.814 KEYWORD ClusterOpenFlow . Modify Sample Flow And Verify   ${original_owner}
00:00:00.000 KEYWORD ${body} = OperatingSystem . Get File   /w/workspace/openflowplugin-csit-3node-clustering-only-calcium/test/csit/libraries/../variables/openflowplugin/sample_flow_2.json
00:00:00.000 IF '${ODL_OF_PLUGIN}' == 'helium'  
00:00:00.003 IF '${ODL_OF_PLUGIN}' == 'lithium'  
00:00:05.794 KEYWORD ClusterManagement . Put_As_Json_And_Check_Member_List_Or_All   ${config_table_0}/flow=1 ${body} ${controller_index} ${controller_index_list}
00:00:00.048 KEYWORD ${response_text} = ClusterManagement . Put_As_Json_To_Member   uri=${uri} data=${data} member_index=${member_index}
00:00:05.745 KEYWORD BuiltIn . Wait Until Keyword Succeeds   5s 1s Check_Json_Member_List_Or_All uri=${uri}?content=config expected_data=${data} member_index_list=${member_index_list}
00:00:00.000 RETURN   ${response_text}
00:00:00.000 KEYWORD BuiltIn . Wait Until Keyword Succeeds   15s 1s ClusterManagement.Check_Item_Occurrence_Member_List_Or_All uri=${operational_table_0} dictionary=${dictionary} member_index_list=${controller_index_list}
00:00:05.407 TEST Delete Configuration In Owner and Verify Before Fail
00:00:05.830 TEST Add Configuration In Successor and Verify Before Fail
00:00:05.814 TEST Modify Configuration In Successor and Verify Before Fail
00:00:05.361 TEST Delete Configuration In Successor and Verify Before Fail
00:00:16.567 TEST Send RPC Add to Owner and Verify Before Fail
00:00:06.238 TEST Send RPC Delete to Owner and Verify Before Fail
00:00:16.386 TEST Send RPC Add to Successor and Verify Before Fail
00:00:06.208 TEST Send RPC Delete to Successor and Verify Before Fail
00:00:05.700 TEST Modify Network And Verify Before Fail
00:00:05.767 TEST Restore Network And Verify Before Fail
00:00:04.246 TEST Kill Owner Instance
00:01:30.161 TEST Check Shards Status After Fail
00:00:00.208 TEST Check Entity Owner Status And Find Owner and Successor After Fail
00:00:05.678 TEST Check Network Operational Information After Fail
00:00:05.544 TEST Add Configuration In Owner and Verify After Fail
00:00:05.695 TEST Modify Configuration In Owner and Verify After Fail
00:00:05.337 TEST Delete Configuration In Owner and Verify After Fail
00:00:00.045 TEST Add Configuration In Successor and Verify After Fail
00:00:00.045 TEST Modify Configuration In Successor and Verify After Fail
00:00:00.020 TEST Delete Configuration In Successor and Verify After Fail
00:00:15.458 TEST Send RPC Add to Owner and Verify After Fail
00:00:05.778 TEST Send RPC Delete to Owner and Verify After Fail
00:00:00.045 TEST Send RPC Add to Successor and Verify After Fail
00:00:00.043 TEST Send RPC Delete to Successor and Verify After Fail
00:00:05.519 TEST Modify Network and Verify After Fail
00:00:05.505 TEST Restore Network and Verify After Fail
00:00:35.224 TEST Start Old Owner Instance
00:01:30.101 TEST Check Shards Status After Recover
00:00:00.208 TEST Check Entity Owner Status After Recover
00:00:05.150 TEST Check Network Operational Information After Recover
00:00:09.152 TEST Add Configuration In Owner and Verify After Recover
00:00:09.701 TEST Modify Configuration In Owner and Verify After Recover
00:00:06.030 TEST Delete Configuration In Owner and Verify After Recover
00:00:05.834 TEST Add Configuration In Old Owner and Verify After Recover
00:00:05.807 TEST Modify Configuration In Old Owner and Verify After Recover
00:00:05.462 TEST Delete Configuration In Old Owner and Verify After Recover
00:00:16.373 TEST Send RPC Add to Owner and Verify After Recover
00:00:06.284 TEST Send RPC Delete to Owner and Verify After Recover
00:00:16.440 TEST Send RPC Add to Old Owner and Verify After Recover
00:00:06.124 TEST Send RPC Delete to Old Owner and Verify After Recover
00:00:05.884 TEST Modify Network and Verify After Recover
00:00:05.845 TEST Restore Network and Verify After Recover
00:00:02.444 TEST Stop Mininet and Exit
00:00:05.376 TEST Check No Network Operational Information
00:03:42.941 SUITE Cluster HA Owner Restart
00:07:59.878 SUITE Cluster HA Data Recovery Leader Follower Failover
00:21:10.335 SUITE 010 Group Flows
00:00:04.621 SUITE 010 Switch Disconnect
00:00:04.358 SUITE 020 Cluster Node Failure
00:01:24.356 SUITE 030 Cluster Sync Problems
00:00:08.734 SUITE 9145